Git学习笔记(二) · 非典型性程序猿
远程库的使用
前面说到的都是git在本地的操作,那么实际协作开发过程中我们肯定是要有一个远程版本库作为项目的核心版本库,也就是投入生产使用的版本。这里我们以 Github为例。Github是一个开放的git远程服务器,首先我们先注册一个github账户,如何注册就不在这里。说了绑定本地版本库与Github远程库有两种方式,一种是以ssh协议连接,在这方式下我们需要先绑定一个ssh key,这个在下面会说。还有一种是https协议,但是使用https速度慢会比慢,而且每次推送(push)都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。
使用Github托管自己的代码库
如果你已经注册完你的Github账户,新增需要在生成一个ssh key,这个key用于验证你的身份是该版本库的创立者,也就是如上面说的允许你使用ssh方式连接Github上的远程库。执行如下命令生成ssh key:
| 
 | 
 | 
注意把youremail@example.com改为你的邮箱。 命令执行过程只能够会要求你设置密码,这个可选的,如果设置了密码,后面每次提交也许输入密码。最后你可以在用户目录下找到.ssh文件夹(我的是C:UsersJustin.ssh)里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
接下来我们需要绑定这个key到你的github账户中:
填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点“Add Key”,你就应该看到已经添加的Key。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
接下来我们在Github上建立一个名为gitstudy的Repository:


GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
Github的Repository分为public 和 private 两种。 public是公共的也就是谁都能查看,如果是商业项目的话还是使用private的吧,不过github要收保护费。
现在,我们根据GitHub的提示,在本地的仓库的目录,也就前面用到的gitStudy下运行命令:
| 
 | 
 | 
其中xiongqi215更换成你的github账户。 另外origin是远程库在你本地的名字,这个git默认的叫法,一般情况下不需要修改。
下一步,就可以把本地库的所有内容推送到远程库上,使用命令
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,以后就不需要加上这个参数了:
github push
如果前面建立ssh key的时候你设置了密码,那么push过程中你也会看到Enter passphrase for key '/c/Users/Justin/.ssh/id_rsa':的提示,这时你需输入之前设置的密码。
成功push后,查看Github上的gitstudy库,发现所有文件已经推送上去了,并且是最新的版本。
从github克隆代码库
现在,假设我们换了一台电脑,或者我们需要克隆别人在Github上的某个库时,我们需要使用git clone:
| 
 | 
 | 
同样xiongqi215更换成你的github账户。
现在,我们的已经在github建立了一个远程库,同时这个库被clone到了多台电脑上。
这时假如A电脑push了一些修改到远程库中,B电脑需要更新到这部分修改,那么可以使用如下命令:
| 
 | 
 | 

小结
- 要绑定本地库与远程库,使用命令git remote add origin git@server-name:path/repo-name.git。
- 绑定后后,使用命令git push -u origin master第一次推送master分支的所有内容。
- 以后,只要使用git push origin master推送最新修改。
- 使用git clone git@server-name:path/repo-name.git命令克隆一个远程库到本地。
- 多台电脑可以使用 git pull origin master抓取相互提交到远程库中的最新修改。
Git是个非常高效的版本控制工具。分布式的、基于修改的管理方式非常适合多人协调完成开发工作。
分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!
这次学习笔记还有很多内容没有涉及,本人还在学习当中。后面陆续补充如分支管理、冲突处理等内容。这里再提供一份命令手册供大家下载。
其它详细教程
Git学习笔记(二) · 非典型性程序猿的更多相关文章
- Git学习笔记 (二)
		Git学习笔记(二) 突然发现,学习新知识新技能,都得经常温故使用,这样才能日益精进.最近学习的Git是因为加入了课题组,在学习做一些后台,由于后台开发会牵扯到多人开发,所以学会Git这一代码管理工具 ... 
- Git学习笔记(二) 远程仓库及分支
		添加远程仓库(以GitHub为例) 所谓的远程仓库,其实就和本地仓库一样,只是我们本地电脑可能会关机什么的.远程仓库的目的就是保证7*24小时开启状态.GitHub是一个很好的公共Git远程仓库(后面 ... 
- git学习笔记二-branch分支
		1.刚创建好的空仓库的分支是空的,即使是master分支也是不存在的.master分支是不能通过git branch 来创建的,只有在完成第一次提交才会自动创建,有git自动完成master分子的创建 ... 
- Git学习笔记二--工作区和暂存区
		Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 简单理解: 我们使用mkdir Git在d盘下创建的文件夹,就是工作区,我们编辑readme.txt文件就是在工作区下完成的: gi ... 
- Mybatis学习笔记(二) —— mybatis入门程序
		一.mybatis下载 mybaits的代码由github.com管理,下载地址:https://github.com/mybatis/mybatis-3/releases 下载完后的目录结构: 二. ... 
- Go学习笔记(二):编写 HelloWorld 程序
		//Hello.go代码 package main import "fmt" func main(){ fmt.Printf("Hello, world!This is ... 
- 微信小程序学习笔记二  数据绑定 + 事件绑定
		微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ... 
- python3.4学习笔记(二) 类型判断,异常处理,终止程序
		python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 #引入外部模块 import xxx #random模块,randint(开始数,结束数) ... 
- Typescript 学习笔记二:数据类型
		中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ... 
随机推荐
- 884A. Book Reading#抽空学习好孩子(模拟)
			题目出处:http://codeforces.com/problemset/problem/884/A 题目大意:每天时间分两部分,工作和学习,工作优先,闲暇读书,问第几天读完 #include< ... 
- grub.cfg文件编辑
			grub2启动项里面找不到Windows的情况,这时候就需要自己去配置grub.cfg 在grub.cfg中加入如下代码: menuentry 'Windows Boot Manager (on /d ... 
- 哈夫曼编码的理解(Huffman Coding)
			哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最 ... 
- tesseract系列(4) -- tesseract训练问题总结
			1. 每次训练模型删除目录下,上述重复的名字 2. 生成inttemp.pffmtable文件的时候,如果下述命令(1)不行的话,或者报错,使用命令(2) (1)mftraining -F font_ ... 
- Unittest - Python 使用总结
			Unittest - Python 使用总结 批量执行 一.UnitTest TestSuite 控制用例执行的顺序 UnitTest 框架默认 main() 方法根据 ASCII 码的顺序加载测试用 ... 
- Python_面试题_更新中
			Python-面试题 线上操作系统 centos py2和py3的区别 每种数据类型,列举你了解的方法 3 or 9 and 8 字符串的反转 is 和 == 的区别? git流程 v = (1) / ... 
- 三十二、http与www服务介绍
			一.用户访问百度(www.baidu.com) 用户访问在url中输入地址后,首先会访问本地的缓存和hosts文件,如果没有,会访问本地DNS,在就是根域和顶级域名等,在前面已经说过了,这里不再赘述. ... 
- day28-黏包现象
			#黏包现象:信息还没接收完,下一次接收的时候一下子接收好几条黏在一起的信息. #黏包现象的原因:接收端不知道发送端发送的数据的长度.recv(字节数小了). # 第一次无法接收完就缓存起来,下一次接收 ... 
- locate及find查找命令
			在文件系统上查找符合条件的文件: 实现工具:locate,find locate: 依赖于事先构建好的索引库: 系统自动实现(周期性任务): 手动更新数 ... 
- 在服务器搭建git服务器
			服务端操作 安装Git及创建用户组.用户 123 yum install gitgroupadd gitadduser git -g git 禁止用户git登录 修改/etc/passwd文件: 找到 ... 
