Git的使用(3) —— 远程版本库的操作(GitHub)
1. 配置SSH
(1) GitHub
登陆GitHub后,点击右上角头像,选择 Setting 。

在左面栏目中选择"SSH and GPG keys"。
打开生成的SSH公钥文件 id_rsa.pub ,不知道怎么配的看:Git的安装与配置 在最下面有教。
点击右上角绿色按钮"New SSH key",在Title中给key起名,在Key中填写从公钥中复制的所有字符,然后点击"Add SSH key",就成功添加了一个key。

(2) 码云Gitee
码云的操作跟GitHub操作一样,只不过全是中文操作,更加简单。
2. 将本地版本库推送到远程版本库
还是最推荐使用TortoiseGit工具+SSH方式推送,毕竟简单许多。
其实推送的原理就是将本地版本库中有的文件去替换掉远程版本库中没有的文件。这么说不是很准确,但也差不多。
(1) 使用SSH方式
使用SSH方式,需要预先配置SSH,如何配置在上面说明。
1) TortoiseGit推送
前提是本地版本库中已经有文件。并且配置好TortoiseGit中的远端。
如何配置TortoiseGit中的远端,看:TortoiseGit的安装与配置
右键工作区空白位置,选择 Git 同步。
选择本地分支、远端分支、配置好的远端URL,点击推送即可把本地版本库推送到远端版本库。

推送成功后,消息框会提示成功推送。因为演示推送的是GitHub,所以可以上GitHub上看一看。

2) 命令行推送
右键工作区空白处,选择"Git Bash Here"。
git remote add origin(远程版本库别名,任意命名即可) SSH连接
git push -u origin(远程版本库别名) master(远程版本库分支)

推送成功。
(2) 使用HTTP方式
使用HTTP因为没有加密通信连接,在本地版本库和远程版本库操作时都需要输入用户名和密码。但是可以在Windows的凭证管理器中设置Windows凭证,以后Git就可以自动调用凭证管理器中的凭证来自动登录。
1) TortoiseGit推送
右键工作区空白位置,选择 Git 同步。
选择本地分支、远端分支、配置好的远端URL,点击推送。

此时弹出GitHub的登陆窗口,输入用户名和密码。

然后就成功推送到了远程版本库。
2) 命令行推送
跟使用SSH推送一样的语句,只是也会弹出GitHub的登陆请求,输入用户名和密码后就可以推送到远程版本库了。
3. 将远程版本库克隆到本地版本库
因为GitHub上的开源项目都是开源的,可以随意下载,所以HTTP方式无需输入口令就可以将项目克隆到本地,SSH不管是推送还是克隆都需要配置公钥和私钥。但如果是私有项目或者私人搭建的Git远程版本库,则可能根据安全等级要求输入口令。
(1) 使用SSH
1) TortoiseGit方式
在空白文件夹内右击,选择"Git 克隆"。

填写URL,选择目录,点击确定。在消息栏中提示成功即可。
2) 命令行方式
在空白文件夹内右击,选择"Git Bash Here"。
git clone 远程版本库URL

克隆完成。
(2) 使用HTTP
操作和使用SSH一样,只是URL是非加密的HTTP形式。
4. 从远程版本库拉取更新到本地版本库
因为一个远程版本库就是为了给多个人使用的。为了得到别人写的代码,总不能删除整个本地版本库重新克隆一个,因为里面可能有自己还未推送的添加/修改操作,所以这里就用到了拉取(pull)操作。
拉取(pull)是获取(fetch)+合并(merge)的结合。获取操作就是从远程版本库中得到远程版本库指定分支最新的文件/操作,合并操作就是将获得的新一个节点中的文件/操作和本地版本库的文件进行合并更新,然后在当前分支产生新的节点。拉取命令就是一下执行这两个操作。
这里的操作统统是基于SSH方式的,如果用HTTP方式,则中间只多出了输入口令的操作。
右击工作区空白处,在TortoiseGit中选择"拉取"。
选择远程版本库和远程版本库的分支后,点击确定,就可以将指定分支的最新文件更新到本地版本库。

5. 从远程版本库拉取产生的冲突
Git有一套精确的判断方法,将远程版本库中的文件和本地版本库中的文件进行对比后更新。但是如果两个人同时修改一个文件,一个人将文件推送到了远程版本库,另一个将自己修改后的同一个文件提交到本地版本库再拉取更新后,可能就会产生冲突。因为两个人同时对一个文件做出了修改,Git无法判断到底应该保留哪些代码,就会报错提示当前拉取方。拉取方解决冲突后才能将本地版本库推送到远程版本库。
目前有两种冲突:
(1) 推送冲突:本地的文件版本比远程版本库中的要早,不是在最新的文件上所做的修改,无法推送成功。
(2) 拉取冲突:本地的文件的内容修改后和远程版本库中的文件内容不一致,拉取时无法自动判断合并。
第一种只会提示冲突,并不会产生冲突文件,也不会将本地版本库中的文件推送到远程版本库;但是第二种冲突会在冲突文件上产生冲突代码,需要手动解决。

产生冲突的文件图标左下角出现黄色警示标志,意为产生冲突。
Git会将两个版本的差异写明,然后需要手动排除冲突。右键冲突文件,在TortoiseGit中选择"编辑冲突",在文本编辑器中手动解决冲突。

解决冲突后,右击冲突文件,在TortoiseGit中选择"解决冲突",将文件标记为已解决冲突。文件图标左下角变成红色叹号,等待提交文件到本地版本库中。在提交到本地版本库的过程里,会首先提醒文件里面有一个冲突文件,需要确认是否将这个文件提交到本地版本库。(不得不说这个汉化用的怕不是Google Translation)

而且会自动在日志里填写出现冲突的文件,需要手动将这些警示信息替换成别的提示信息。

提交后,就算完成解决冲突。
Git的使用(3) —— 远程版本库的操作(GitHub)的更多相关文章
- Git的使用(2) —— 本地版本库的操作
1. 向本地版本库中添加文件 注意:.git文件夹是本地版本库,包含.git文件夹的目录叫工作目录,要往本地版本库中添加文件,就必须将文件放在工作目录中. (1) 把文件添加到工作目录中. (2) 右 ...
- Git学习笔记---安装与初始化 连接远程版本库
1.Git的安装 sudo apt-get install git 用的是linux(ubuntu)系统,安装非常简单,上面一条命令就够了. 2.初次运行的配置 Git 提供了一个叫做 git con ...
- 关于git远程版本库的一些问题之解决
Part1:CentOS6.5免密码登录 修改/etc/ssh/sshd_config RSAAuthentication yesPubkeyAuthentication yesAuthorizedK ...
- GIT使用—创建并使用远程版本库
远程版本库 (1)创建一个裸版本库 [root@localhost tmp]# git init fluff2 Initialized empty Git repository in /tmp/flu ...
- git 创建远程版本库(亲测有效)
一.github远程版本库 1.创建SSH Key(windows) ssh-keygen -t rsa -C "youremail@example.com" 2.连接版本 ...
- Git远程版本库
目前为止,所有的Git操作都是在一个本地版本库中.现在是时候来体验Git分布式的特性了. 说到远程版本库,大家最为熟悉的就是GitHub了,它实际上就相当于一个远程版本库,托管着所有的本地版本库的提交 ...
- Git版本控制工具(一)----git的安装及创建版本库
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- GitHub学习三-远程版本库更新与提交
1.远程版本库更新 一般来说,将本地与远程相关联之后,首先将数据从远程更新下来再上传比较好. 输入 git pull origin master 如果新建版本库的话勾选了初始化包含readme.md, ...
- Git 学习(二)版本库创建
Git 版本库创建 什么是版本库(repository)? 可理解为文件仓库.由Git管理每个文件的新增.修改及删除,但这个仓库可以追溯历史.可还原至任意历史节点. 版本库创建 创建一个版本库非常简单 ...
随机推荐
- 纯 CSS 画 iphone
好几天没有更新了,直接上效果吧,哈哈!(我想这个应该大部分都会!哈哈哈!) 代码如下: html: <div class="container"> <div cl ...
- FreeRTOS任务运行时间信息统计
相关宏的设置 configGENERATE_RUN_TIME_STATS //使能 portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() //配置一个高精度定时器/计数器提 ...
- 【hadoop】在eclipse上运行WordCount的操作过程
序:本以为今天花点时间将WordCount例子完全理解到,但高估自己了,更别说我只是在大学选修一学期的java,之后再也没碰过java语言了 总的来说,从宏观上能理解具体的程序思路,但具体到每个代码有 ...
- Linux下环境变量设置 (转)
Linux下环境变量设置 1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错 ...
- Java Decompiler反编译Jar文件
1.重新编译已经打包的Jar包,使用 Java Decompiler 打开需要重新编译的jar包,找到自己需要自己修改的Class文件 ,修改之后电子保存文件 ,保存的时候编译工具自动将class文件 ...
- HDU-2204-Eddy's爱好-容斥求n以内有多少个数形如M^K
HDU-2204-Eddy's爱好-容斥求n以内有多少个数形如M^K [Problem Description] 略 [Solution] 对于一个指数\(k\),找到一个最大的\(m\)使得\(m^ ...
- linux 小常识
背景: 在工具中遇到一些linux相关的问题,解决后做个笔记记录下来,后续遇到就不用 在查来查去了 1. 启动地址配置 127.0.0.1 和 0.0.0.0 区别 127.0.0.1 地址只能对本机 ...
- 「NOI2012」骑行川藏
「NOI2012」骑行川藏 题目描述 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨. 川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的 ...
- Bias vs. Variance(3)---用learning curves来判断bias/variance problem
画learning curves可以用来检查我们的学习算法运行是否正常或者用来改进我们的算法,我们经常使用learning cruves来判断我们的算法是否存在bias problem/varianc ...
- 关于devexpress报表XtraReport,动态修改报表样式(.repx格式),动态添加数据并使用的理解
一.基本概念: XtraReports 中的每个报表都由 XtraRepot 类的一个实例表示,或者由该类的子类来表示(这种情况更常见). 因此,每个报表都作为带区的容器使用,而每个带区中都包含报表控 ...