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管理每个文件的新增.修改及删除,但这个仓库可以追溯历史.可还原至任意历史节点. 版本库创建 创建一个版本库非常简单 ...
随机推荐
- Linux正则表达式,grep总结,sed用法
原文: 1.sed 流编辑器,实现对文字的增删改替换查(过滤.取行),能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件 输入到屏幕,可以把只匹配到模式的内容输入到屏幕上.还可以对原文件 ...
- 18,flask项目中使用celery
导包: from celery import Celery from celery.result import AsyncResult app.config['CELERY_BROKER_URL'] ...
- Oracle IMP-00010 不是有效的导出文件,标头验证失败 解决方法
用IMP导入dmp文件时,出现IMP-00010 不是有效的导出文件,标头验证失败问题. 第一种:网上搜索到的大多解决方法是说导出文件时使用的Oracle版本不一致问题,需要修改dmp文件的版本号.如 ...
- [daily][archlinux] pacman 安装软件时404的问题
时常,我们在archlinux上pacman安装一个软件时,会遇见如图这样的问题: “The requested URL returned error: 404” [classic_tong @ 2 ...
- Flink原理(五)——容错机制
本文是博主阅读Flink官方文档以及<Flink基础教程>后结合自己理解所写,若有表达有误的地方欢迎大伙留言指出. 1. 前言 流式计算分为有状态和无状态两种情况,所谓状态就是计算过程中 ...
- Python如何打印文字对应的索引
用python编写一个简单的小程序:将文字对应的索引打印出来. test=input('>>>') print(test) l=len(test) print(l) r=range( ...
- 小顶堆---非递归C语言来一发
#include <stdio.h> #include <stdlib.h> #define HEAP_SIZE 100 #define HEAP_FULL_VALUE -10 ...
- java连接mysql数据库时的时区设置问题(time_zone)
java在连接mysql数据库时,会由于时区设置不正确导致报以下的错误: The server time zone value '???ú±ê×??±??' is unrecognized or ...
- python网络-静态Web服务器案例(29)
一.静态Web服务器案例代码static_web_server.py # coding:utf-8 # 导入socket模块 import socket # 导入正则表达式模块 import re # ...
- LG5325 【模板】Min_25筛
P5325 [模板]Min_25筛 题目背景 模板题,无背景. 题目描述 定义积性函数$f(x)$,且$f(p^k)=p^k(p^k-1)$($p$是一个质数),求 $$\sum_{i=1}^n f( ...