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管理每个文件的新增.修改及删除,但这个仓库可以追溯历史.可还原至任意历史节点. 版本库创建 创建一个版本库非常简单 ...
随机推荐
- Go path/filepath文件路径操作
本文:https://books.studygolang.com/The-Golang-Standard-Library-by-Example/chapter06/06.2.html path:htt ...
- iOS 静态、全局变量、常量
关键字static 两个概念:生命周期.作用域生命周期:这个变量能存活多久,它所占用的内存什么时候分配,什么时候收回.作用域:这个变量在什么区域是可见的,可以拿来用的. static分两种情况:修饰局 ...
- 视觉AI风口一触即发,虹软AI沙龙点金深圳
7月26日,虹软AI沙龙在深圳湾科技生态园空间举办.AI沙龙是基于虹软视觉开放平台的开发者交流沙龙,旨在通过分享最新的实战案例,帮助开发者解决技术及落地难题,让技术更贴近实用场景. 本次活动中,深圳市 ...
- (五)react-native开发系列之Android原生交互
react-native可以做web与原生的交互,这是使用react-native开发项目的主要目的之一,也是主要优势,用rn而不用原生交互则毫无价值,这篇文章用来记录在项目中rn的原生交互使用过程. ...
- c# MatchCollection类
- 华为云PaaS首席科学家:Cloud Native +AI,企业数字化转型的最佳拍档
近日,在2019华为全球分析师大会期间,华为云PaaS首席科学家熊英博士在+智能,见未来(华为云&大数据)的分论坛上,从云计算行业发展谈起,深入云原生发展趋势,对华为云智能应用平台做了深度解读 ...
- 小顶堆---非递归C语言来一发
#include <stdio.h> #include <stdlib.h> #define HEAP_SIZE 100 #define HEAP_FULL_VALUE -10 ...
- openstack各服务端口使用情况
端口占用情况 端口情况可以使用ss -tanp命令进行查看 监听的所有端口ss -tanp | grep LISTEN 基础服务 22 --SSH 3306 --MariaDB(MySQL) 2701 ...
- python高级特性-列表生成
概述 [x *x for x in range(1,11)][k+'='+v for k,v in d.items()] [s.lower() for s in L] 详解 1.单层迭代 >&g ...
- javaWeb的HttpServletRequest和HttpServletResponse
HttpServletRequest HttpServletRequest对象是封装了用户的请求信息,包括请求参数去,请求头等信息,service()f方法中的两个HttpServletRequest ...