1、“Git”是什么?
浅显的理解,Git是一款代码管理工具(Version Control System),无疑对比现在市面上的VCS,“Git”绝对是最牛逼的。深层次的讲,在公司的时候,某大神曾讲:“Git的出现,使得其他国家和美国的计算机水平差距拉近了30年!!!”,也是从那个时候起,小生励志要好好学习Git,造福网友。
2、“VCS”的历史
如上,已经了解“Git”是一款VCS,那么究竟什么是VCS?
"SVN"就是一款常用的VCS,至此就了解了,VCS就是用来管理代码的版本的工具,纵观VCS的历史,如图:
(一帧一帧转出来的,导图是不是又长进啦?哈哈)
其实从上世纪90年代初到本世纪2005年,VCS一共经历了三个里程碑式的进步:
2.1本地版本控制
其原理也如图所示:通过保存并管理文件补丁的方式,来记录对应文件修订前后的内容变化。目前最为流行的一种本地版本控制系统是rcs,所以,根据每次修订后的补丁,rcs可以通过不断打补丁,计算出各个版本的文件内容。当然这样做之后,对于本机被管理文件可以做到版本回滚或者回退,但是对于处在不同系统上的开发者要进行协同工作,就遇到了问题。于是也就有了下面的“集中式版本控制工具”。
2.2集中式版本控制
如上图所示,是集中式版本控制的原理图。比较流行的工具有CVS,Subversion(SVN)以及Perferce等,他们都有一个单一的几种管理的服务器,保存所有文件的修订版本,协同工作的人(如图中的Computer A、Computer B)通过客户端连接到Central VCS Server这台服务器上,取出或者提交文件,而这也成为了版本控制系统的标准做法。
相比老式的VCS,每个人能看到项目中其他人在干嘛,管理员也可以控制每个开发者的权限,但是一个致命的缺点就是中央服务器的单点故障。如果发生,谁都无法提交更新,无法协同工作,甚至有丢失数据的风险。至此,后来产生了“分布式版本控制工具”。
2.3分布式版本控制
如图,是分布式版本控制的示意图,比较火的有Git,Bazaar等,原理在于:“客户端并不是提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来”,这样一来,任何一处协同工作的服务器发生故障,事后可以使用任何一个镜像出来的本地仓库恢复,因为每一次提取操作,都是对镜像的完整备份。
由此便对版本控制的历史进行了回顾,对于“分布式版本控制”中的Git,除了有上述的有点之外,还有相对于其他“分布式版本控制”的独特之处,后边给予分析,至此,VCS的宏观概念就建立了。
3、“Git”的历史
这段历史,我在网上的资料中看的也是如痴如醉,首先Git的创始人是“Linus Torvalds”,如果你不知道他是何许人也,我想也就没有必要再贵圈混下去了,爆照:(帅锅程序猿一枚)
如图,是Linus年轻时候的照片,没错,这就是Linux的创始人。
言归正传,起初参与Linux开源项目的代码是由Linus本人通过“diff”和“patch”命令来手动为别人整合代码的,之后正如在《Pro Git》这本书中所讲到的,随着项目越做越大,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。直到2005年,Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图Po 解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!Git也由此诞生了。然而牛逼的人生从来不需要解释这句话被Linus展现的淋漓尽致……
标签:历史,版本控制,Git,版本,Linux,Linus,VCS From: https://blog.51cto.com/u_15130867/7060435