啥是GIT
创建Linux的大佬 Linus ,花了两周时间自己用C写的一个分布式版本控制系统。
在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!
为什么Linus不把Linux代码放到版本控制系统里呢?
不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。
Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。
集中式vs分布式
集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
集中式版本控制系统最大毛病是必须联网才能工作。遇到网速慢就十分影响工作效率。
分布式就没有“中央服务器”,每个人的电脑都是一个完整的版本库,工作的时候不需要联网(版本库就在个人电脑上),每个人的电脑上都是一个完整的版本库。分布式版本控制系统通常也有一台充当“中央服务器"的电脑,但是该服务器的作用仅仅是方便大家的修改,没他照样干活。
以下是Scrat学习 Git 时制作的Xmind。
下面着重讲几个命令:
Git Pull
拉取远程服务器上代码并合并到本地仓库。
1 2 3 4 5 |
|
上面的命令会将远程服务器上的master分支合并到localbranch中。
Git Fetch
拉取不合并。
1 2 3 4 5 6 |
|
获取 remote branch, 然后创建一个本地copy,你不应该直接对这个copy做任何的操作,而应该应该创建一个本地分支,然后在本地分支上进行工作。
Git Clone
clone将会克隆一个本地厂库,最初的git命令。
1 2 3 4 5 |
|
clone会为它被克隆的远程repo创建名为“origin”的local repo,并为远程repo的活动分支创建一个本地分支以及远程跟踪分支。
Git rebase
这个命令相当的cool, 你对当前分支所作的任何改变都被保存到一个临时区域,因此你的分支将会和改变之前一样干净。如果你用git pull -rebase,git将会获取远程的改变,遍历当前本地分支,然后替换你当前分支的所有改动。
Finally
如果你在使用过程中遇到了问题,使用git branch -a, 它会显示本地厂库的所有分支:本地的,远程的。这是一个很好的杀手锏,请记住,git bracches只是一个pointer。所以为了能够处理这些提交请求,你需要一个本地分支,通过本地分支你可以获取这些提交。
参考:https://www.liaoxuefeng.com/wiki/896043488029600
更多: Python目录