一、 Git基本介绍
Git是目前世界上最流行的分布式版本控制系统,它最大的特点就是分布式,Git是Linux内核之父为了管理繁杂的Linux内核而开发的开源版本控制系统,后来随着GitHub这样的开源代码托管系统大热,GIT也被越来越多的人知晓和使用。
当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面。
二、Git的思想和基本工作原理
Git和其他版本控制系统相比,Git只关心文件数据的整体是否发生变化,而大多数其它系统则只关心文件内容的具体差异。这类系统(如:SVN)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。
集中式版本控制的记录模式:
这样的话,每次要查看一个版本的内容时,都要根据这些记录合并一下,因此速度就会慢下来。
Git 并不保存这些前后变化的差异数据。实际上,Git更像是把变化的文件作快照(备份)后,记录在一个微型的文件系统中,但这个备份不是像我们粘贴复制那么简单,Git会处理,压缩等。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这最新一次快照的索引。为提高性能,若文件没有变化,Git不会再次保存,而只对上次保存的快照作一链接。
Git记录模式:
三、文件的三种状态
对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地版本库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。
已修改-->已暂存-->已提交
四、Git背后的故事
Linus在1991年创建了开源的Linux项目,从此,在全世界的大神的贡献下,Linux系统不断发展、完善,已经成为最大的服务器操作系统。
Linus创建了Linux,不过Linux的发展壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,编写完成后,将源代码文件发给Linus,然后由Linus本人通过手工方式合并代码!可能你会想,不是有其它的版本控制系统吗?2001年svn诞生,更早的还有CVS,原因很简单,因为Linus不喜欢,速度慢、必须连网,还收费。
不过,到了2002年,Linux系统已经发展了十年,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。
安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集。开发Samba的Andrew试图破解BitKeeper的协议(也有其他人这么干),被BitMover公司发现了,警告过几次后,还没收手,于是BitMover公司怒了,要收回Linux社区的免费使用权。
然后Linus给BitMover公司道了歉,教训了自己的兄弟们,不过这是不可能的!
小弟犯了错误,大哥来扛!毫无悬念的BitMover公司和Linux内核开源社区的合作关系结束,他们收回了免费使用BitKeeper的权力。
于是Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!
Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。
历史总是充满了偶然,如果没有社区的小弟那档子事,可能我们现在就没有机会用这么好用且免费的Git了。