Git 历史
git linux 之父设计并开始研发。linux的内核源代码原来是放在bitkapper托管,bitkapper后来收回了对linux源代码的托
管,原因是bitkapper说他们内部有人对bitkapper的协议进行了逆向工程,当时市面上的版本管理工具又不能满足李纳斯·
托沃兹(Linus Torvalds)的需求,所以他决定自己来开发一个款版本管理工具,于是git在2005年4月3号开始开发,同年的4
月6号就公布了这个工程,4月7号git可以通过自身实现版本控制,4月18号完成了多分支合并,之后李纳斯·托沃兹(Linus
Torvalds)又把git交给另外一位同事维护.
Git与SVN的对比
那么git跟传统的版本控制工具有什么区别呢?特别是SVN。
接下来我们看下传统的集中式版本控制系统
中间是中央服务器,有版本控制的数据库,其他电脑是没有,大部分时候电脑做操作的时候都需要跟中央服务器做交互
试想下如果中央服务器发生灾难性损坏,这个备份没有做怎么办?或是说如果中央服务器处于离线状态怎么办?那么
我们来看看分布式版本控制的示意图:
分布式版本控制其实也可以拥有一台版本控制服务器,它的作用就是给其他成员做协同的作用,分布式版本控制与集中式
的相比,就是灵活性更高,ComputerA与ComputerB在离线的状态下(使用LAN)也可以实现代码共享协同开发
我们再来看看Git与SVN相比另外一个主要的差别
这是SVN版本管理的示意图,SVN这里每一个版本存储的都是前一个版本的差异,如果我我在版本5的时候提取一个文件,
它会向前去找老版本中的此文件,对比合并。其实就是叠加的操作.
举个例子,以C为例,如果C中版本Version2里的有一个命为employee的表,内容为:
{"name":"bugall","age":"18"}
Version3时添加一条新数据:{"name":"yyf","age":"18"}
那么这时employee里的完整数据为:
{"name":"bugall","age":"18"}
{"name":"yyf","age":"18"}
可是Version3中的employee文件只存储差异也就是{"name":"yyf","age":"18"}这条数据。
我们再来看一下Git是怎么存储文件版本的。在这里每个版本都是完整的文件,它不需要去与老版本进行对比叠加得到完
整的文件,这也就是为什么git的效率比svn高的地方。