【Git之窗】(一)Git的历史

  “历史不是镜子,历史是精子,牺牲亿万,才有一个活到今天”。
                                                                                                                                                                 --- 前言


         今天我扮演下大紧老师的角色,和网友们“奇闻说今古”,聊一聊Git的前世今生。
        

一、“GIt”是什么?

    浅显的理解,Git是一款代码管理工具(Version Control System),无疑对比现在市面上的VCS,“Git”绝对是最牛逼的。深层次的讲,在公司的时候,某大神曾讲:“Git的出现,使得其他国家和美国的计算机水平差距拉近了30年!!!”,也是从那个时候起,小生励志要好好学习Git,造福网友。

二、“VCS”的历史

   如上,已经了解“Git”是一款VCS,那么究竟什么是VCS?
   "SVN"就是一款常用的VCS,至此就了解了,VCS就是用来管理代码的版本的工具,纵观VCS的历史,如图:
         
        (一帧一帧转出来的,导图是不是又长进啦?哈哈)

   其实从上世纪90年代初到本世纪2005年,VCS一共经历了三个里程碑式的进步:
  (1)本地版本控制
                           【Git之窗】(一)Git的历史_第1张图片
      其原理也如图所示:通过保存并管理文件补丁的方式,来记录对应文件修订前后的内容变化。目前最为流行的一种本地版本控制系统是rcs,所以,根据每次修订后的补丁,rcs可以通过不断打补丁,计算出各个版本的文件内容。当然这样做之后,对于本机被管理文件可以做到版本回滚或者回退,但是对于处在不同系统上的开发者要进行协同工作,就遇到了问题。于是也就有了下面的“集中式版本控制工具”。            

  (2)集中式版本控制
                       【Git之窗】(一)Git的历史_第2张图片
    如上图所示,是集中式版本控制的原理图。比较流行的工具有CVS,Subversion(SVN)以及Perferce等,他们都有一个单一的几种管理的服务器,保存所有文件的修订版本,协同工作的人(如图中的Computer A、Computer B)通过客户端连接到Central VCS Server这台服务器上,取出或者提交文件,而这也成为了版本控制系统的标准做法。
   相比老式的VCS,每个人能看到项目中其他人在干嘛,管理员也可以控制每个开发者的权限,但是一个致命的缺点就是中央服务器的单点故障。如果发生,谁都无法提交更新,无法协同工作,甚至有丢失数据的风险。至此,后来产生了“分布式版本控制工具”。 
            
   (3)分布式版本控制
                      【Git之窗】(一)Git的历史_第3张图片
      如图,是分布式版本控制的示意图,比较火的有Git,Bazaar等,原理在于:“客户端并不是提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来”,这样一来,任何一处协同工作的服务器发生故障,事后可以使用任何一个镜像出来的本地仓库恢复,因为每一次提取操作,都是对镜像的完整备份。
    由此便对版本控制的历史进行了回顾,对于“分布式版本控制”中的Git,除了有上述的有点之外,还有相对于其他“分布式版本控制”的独特之处,后边给予分析,至此,VCS的宏观概念就建立了。

三、“Git”的历史

    这段历史,我在网上的资料中看的也是如痴如醉,首先Git的创始人是“Linus Torvalds”,如果你不知道他是何许人也,我想也就没有必要再贵圈混下去了,爆照:(帅锅程序猿一枚)
                      【Git之窗】(一)Git的历史_第4张图片
      如图,是Linus年轻时候的照片,没错,这就是Linux的创始人, 网上有很多“Git十年访谈”的访谈帖子,放个链接(http://geek.csdn.net/news/detail/30067)感兴趣的朋友可以去搜搜看。
    言归正传,起初参与Linux开源项目的代码是由Linus本人通过“diff”和“patch”命令来手动为别人整合代码的,之后正如在《Pro Git》这本书中所讲到的,随着项目越做越大,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。直到2005年,Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的: Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!Git也由此诞生了。然而牛逼的人生从来不需要解释这句话被Linus展现的淋漓尽致……

    就这样子,又10年过去了,Git越来越成熟,小生在北京工作的时候第一次安装Git Extention和Git Bash的时候,就被其强大的功能所折服了,Git绝对不是一个简单的工具,是开源精神的产物,人类进步的见证!!!

 

           好,这期节目再见,吃瓜群众准备好瓜子花生米还有小板凳,精彩稍后继续。


你可能感兴趣的:(【Git之窗】,git,历史)