Git

Git(简介一)

Git

 读法:[gɪt]

 是一个分布式版本控制软件,最初由(Linus Torvalds)林纳斯·托瓦兹创作,于2005年以GPL发布。

1.命名来源

林纳斯·托瓦兹自嘲地取了这个名字“git”,该词源自英国俚语,意思大约是“混账”。

“I’m an egotistical bastard, and I name all my projects after myself. First Linux, now git.”

2.历史

2002年,林纳斯·托瓦兹决定使用BitKeeper作为Linux内核主要的版本控制系统用以维护代码。BitKeeper是一套BitMover公司开发的分布式版本控制软件。由于Bitkeeper是专有软件,所以当时的Linux社区中,很多牛人都看不惯,于是就有了后来在2005年,安德鲁·垂鸠 写了一个简单程序,可以连接BitKeeper的存储库,BitKeeper 著作权拥有者 拉里·麦沃伊认为安德鲁·垂鸠对BitKeeper内部使用的协议进行逆向工程,决定收回免费使用的BitKeeper的授权。后来Linux内核开发团队与BitMover公司进行了磋商,但无法解决他们之间的矛盾。最后,牛叉的Linux创始人,Linus Torvalds 决定自行开发版本控制系统替代BitKeeper,并且仅用了10天时间,编写出了一个git版本。

3.版本

版本 原始发行日期 最新版本 发行日期
旧版本,不再支持: 0.99 2005-07-11 0.99.9n 2005-12-15
旧版本,不再支持: 1.0 2005-12-21 1.0.13 2006-01-27
旧版本,不再支持: 1.1 2006-01-08 1.1.6 2006-01-30
旧版本,不再支持: 1.2 2006-02-12 1.2.6 2006-04-08
旧版本,不再支持: 1.3 2006-04-18 1.3.3 2006-05-16
旧版本,不再支持: 1.4 2006-06-10 1.4.4.5 2008-07-16
旧版本,不再支持: 1.5 2007-02-14 1.5.6.6 2008-12-17
旧版本,不再支持: 1.6 2008-08-17 1.6.6.3 2010-12-15
旧版本,不再支持: 1.7 2010-02-13 1.7.12.4 2012-10-17
旧版本,不再支持: 1.8 2012-10-21 1.8.5.6 2014-12-17
旧版本,不再支持: 1.9 2014-02-14 1.9.5 2014-12-17
旧版本,不再支持: 2.0 2014-05-28 2.0.5 2014-12-17
旧版本,不再支持: 2.1 2014-08-16 2.1.4 2014-12-17
旧版本,不再支持: 2.2 2014-11-26 2.2.3 2015-09-04
旧版本,不再支持: 2.3 2015-02-05 2.3.10 2015-09-29
旧版本,仍被支持: 2.4 2015-04-30 2.4.11 2016-03-17
旧版本,仍被支持: 2.5 2015-07-27 2.5.5 2016-03-17
旧版本,仍被支持: 2.6 2015-09-28 2.6.6 2016-03-17
旧版本,仍被支持: 2.7 2015-10-04 2.7.4 2016-03-17
旧版本,仍被支持: 2.8 2016-03-28 2.8.4 2016-06-06
旧版本,仍被支持: 2.9 2016-06-13 2.9.3 2016-08-12
旧版本,仍被支持: 2.10 2016-09-02 2.10 2016-09-02
当前版本: 2.11 2016-11-29 2.11 2016-11-29
格式:
旧版本
旧版本,仍被支持
当前版本
最新的预览版
未来版本

4.主要功能

git与CVS、Subversion 一类的集中式版本控制工具不同,它采用了分布式版本库的做法,不需要服务器端软件,就可以运作版本控制,这样,源代码的发布和交流就极其方便。git的速度很快,git最为出色的就是它的合并追踪(merge tracing)能力。

实际上内核开发团队决定开始开发和使用git来作为内核开发的版本控制系统的时候,世界上开源社区的反对声音不少,最大的理由是git太艰涩难懂,从git的内部工作机制来说,的确是这样。但是随着开发的深入,git的正常使用都由一些友善的命令稿来执行,使git变得非常好用。

作为开源自由原教旨主义项目,git没有对版本库的浏览和修改做任何的权限限制,通过其他工具也可以达到有限的权限控制,比如:gitosis、CodeBeamer MR。原本git的使用范围只适用于Linux/Unix平台,但在Windows平台下的使用也日渐成熟,这主要归功于Cygwin、msysgit环境,以及TortoiseGit 这样易用的GUI工具。

5.集中式VS分布式

集中式版本控制系统,例如老的CVS还有SVN都属于集中式版本控制系统。版本库是集中存放在中央服务器的,撸代码的时候,用的都是自己的电脑,所以在开始干活之前,要先从中央服务器把最新的版本down下来,然后才能开始干活,最后干完活,再把自己的活推送到中央服务器。

并且集中式版本控制系统最大的弊端就是必须在联网的时候才能工作。内网的话还好,带宽够大,速度够快;可如果实在互联网上,遇到网速慢的话,就坑爹了,可能提交一个10MB的文件就需要5分钟,这还不得把人给憋死啊。
ok,在了解了集中式版本控制系统之后,再看下分布式版本控制系统。首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面。

CVS作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。

除了免费的外,还有收费的集中式版本控制系统,比如IBM的ClearCase(以前是Rational公司的,被IBM收购了),特点是安装比Windows还大,运行比蜗牛还慢,能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗,或者人傻钱多。

微软自己也有一个集中式版本控制系统叫VSS,集成在Visual Studio中。由于其反人类的设计,连微软自己都不好意思用了。

分布式版本控制系统除了Git以及促使Git诞生的BitKeeper外,还有类似Git的Mercurial和Bazaar等。这些分布式版本控制系统各有特点,但最快、最简单也最流行的依然是Git!

发表评论

邮箱地址不会被公开。 必填项已用*标注