2019-02-16 09:33:53 热度:

Git和SVN之间的五个基本区别

若是你在读这篇文章,申明你跟年夜大都开辟者一样对GIT感乐趣,若是你还没有机遇来试一试GIT,我想此刻你就要领会它了。

GIT不但仅是个版本节制系统,它也是个内容办理系统(CMS),工作办理系统等。若是你是一个具有利用SVN布景的人,你需要做必然的思惟转换,来顺应GIT供给的一些概念和特点。所以,这篇文章的首要目标就是经由过程先容GIT能做甚么、它和SVN在深条理上事实有甚么分歧来帮忙你熟悉它。

那好,这就起头吧…

1.GIT是散布式的,SVN不是:

这是GIT和其它非散布式的版本节制系统,例如SVN,CVS等,最焦点的区分。若是你能理解这个概念,那末你就已上手一半了。需要做一点声明,GIT其实不是今朝第一个或独一的散布式版本节制系统。还有一些系统,例如Bitkeeper,?Mercurial等,也是运行在散布式模式上的。但GIT在这方面做的更好,并且有更多壮大的功能特点。

GIT跟SVN一样有本身的集中式版本库或办事器。但,GIT更偏向于被利用于散布式模式,也就是每一个开辟职员从中间版本库/办事器上chect out代码后会在本身的机械上克隆一个本身的版本库。可以如许说,若是你被困在一个不克不及毗连收集的处所时,就像在飞机上,地下室,电梯里等,你依然可以或许提交文件,查看汗青版本记实,建立项目分支,等。对一些人来讲,这仿佛没多年夜用途,但当你俄然碰到没有收集的情况时,这个将解决你的年夜麻烦。

一样,这类散布式的操纵模式对开源软件社区的开辟来讲也是个庞大的恩赐,你没必要再像之前那样做出补钉包,经由过程email体例发送出去,你只需要建立一个分支,向项目团队发送一个推要求。这能让你的代码连结最新,并且不会在传输进程中丢掉。GitHub.com就是一个如许的优异案例。

有些谎言传出来讲subversion未来的版本也会基于散布式模式。但最少今朝还看不出来。

2.GIT把内容按元数据体例存储,而SVN是按文件:

所有的资本节制系统都是把文件的元信息埋没在一个近似.svn,.cvs等的文件夹里。若是你把.git目次的体积年夜小跟.svn比力,你会发现它们差距很年夜。由于,.git目次是处于你的机械上的一个克隆版的版本库,它具有中间版本库上所有的工具,例如标签,分支,版本记实等。

3.GIT分支和SVN的分支分歧:

分支在SVN中一点不出格,就是版本库中的别的的一个目次。若是你想知道是不是归并了一个分支,你需要手工运行像如许的号令svn propget svn:mergeinfo,来确认代码是不是被归并。感激Ben同窗指出这个特点。所以,常常会产生有些分支被漏掉的环境。

但是,处置GIT的分支倒是相当的简单和有趣。你可以从统一个工作目次下快速的在几个分支间切换。你很轻易发现未被归并的分支,你能简单而快捷的归并这些文件。

4.GIT没有一个全局的版本号,而SVN有:

今朝为止这是跟SVN比拟GIT贫乏的最年夜的一个特点。你也知道,SVN的版本号现实是任何一个响应时候的源代码快照。我以为它是从CVS进化到SVN的最年夜的一个冲破。由于GIT和SVN从概念上就分歧,我不知道GIT里是甚么特点与之对应。若是你有任何的线索,请在评论里奉献出来与年夜家同享。

更新:有些读者指出,我们可使用GIT的SHA-1来独一的标识一个代码快照。这个其实不能完全的取代SVN里轻易浏览的数字版本号。但,用处应当是不异的。

5.GIT的内容完全性要优于SVN:

GIT的内容存储利用的是SHA-1哈希算法。这能确保代码内容的完全性,确保在碰到磁盘故障和收集题目时下降对版本库的粉碎。这里有一个很好的关于GIT内容完全性的会商 –http://stackoverflow.com/questions/964331/git-file-integrity

GIT和SVN之间只有这五处分歧吗?固然不是。我想这5个只是“最根基的”和“最吸惹人”的,我只想到这5点。若是你发现有比这5点更有趣的,请同享出来,接待。

文章来历:博客在线