Git历史及与SVN的不同之处

来源:互联网 发布:stc12c系列单片机 编辑:程序博客网 时间:2024/06/06 05:12

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高的地方。

0 0