Git 与 SVN的区别(分布式 VS 集中式)

区别:
1、 Git分布式,SVN集中式
集中式系统,只有一个中央版本库一旦故障,影响全部,成员工作必须依靠网络,但资源集中分布式系统成员都可以是中央库,工作不需要网络

2、Git只关心文件数据的整体是否发生变化,而SVN则关心文件内容的变化。例:SVN每次记录有哪些文件作了更新,及更新了什么内容。 而Git 并不保存这些前后变化的差异数据,Git像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。

3、Git把内容按元数据方式存储,而SVN是按文件,所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等;

4、Git的内容的完整性要优于SVN: Git的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏;

5、Git 绝大多数操作都只需要访问本地文件和资源不必联网就可以看到所有的历史版本记录,而SVN 却需要联网,代码提交,SVN 断开网络或者断开VPN是无法commit代码,而 Git先commit到本地,再push的;

6、Git 克隆一个完整项目的速度非常快,SVN 非常慢,例如:克隆一份全新的目录,以同样拥有五个分支来说,SVN是同时复製5个版本的文件,也就是说重复五次同样的动作。而Git只是获取文件的每个版本的 元素,然后只载入主要的分支(master),例如:克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约1500个文件的 SVN,耗了将近一个小时!而Git只用了区区的1分钟!

7、分支(Branch)的不同,SVN,分支是一个完整的目录且这个目录拥有完整的实际文件。如果工作成员想要开啟新的分支,那将会影响“全世界”!每个人都会拥有和你一样的分支。如果你的分支是用来进行破坏工作(安检测试),那将会像传染病一样,你改一个分支,还得让其他人重新切分支重新下载。而 Git,每个工作成员可以任意在自己的本地版本库开啟无限个分支。举例:当我想尝试破坏自己的程序(安检测试),并且想保留这些被修改的文件供日后使用, 我可以开一个分支,做我喜欢的事。完全不需担心妨碍其他工作成员。只要我不合并及提交到主要版本库,没有一个工作成员会被影响。等到我不需要这个分支时, 我只要把它从我的本地版本库删除即可

8、Git没有一个全局的版本号,而SVN有,SVN的版本号版本号其实就相当于对应时间的源码快照,可用于回退操作。但Git可以利用SHA-1的唯一来标示一个代码快照,却也远比不过SVN简单易懂的版本号,这是SVN的一个重大突破,要远优于Git。

9、SVN适于项目管理,Git适于代码版本管理
SVN支持中文,操作简单,界面统一,功能完善,美工、产品、测试、开发、设计都可以轻松上手
Git 空间占用率低,易于代码分支管理,但图形界面支持较差,不支持中文,使用难度较大不易上手
一个研发队伍正常包括:需求分析、设计、美工、程序员、测试、实施、运维,每个成员在工作中都有产出物,包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN能清楚的按目录进行分类管理, 使项目组的管理处于有序高效的状态。

优缺点:
Git
优点:
Git每台电脑都有一个版本库,可以在本地做版本管理;
速度快。Git的速度远超大部分版本管理系统,包括svn
强大的分支管理功能
活跃的开源社区,如最著名的github

缺点:
Git 没有严格的权限管理控制,一般通过系统设置文件读写权限的方式来做权限控制。
工作目录只能是整个项目。比如 checkout,建分支,都是基于整个项目的。而 svn 可以基于项目中的某一个目录

SVN
1、管理方便,集中式服务器更能保证安全性。
2、适合开发人数不多的项目开发。
3、相对简单,好操作

缺点:
1、服务器压力太大,数据库容量暴增。
2、如果不能连接到服务器上,基本上不可以工作
3、如果服务器不能连接上,就不能提交,还原,对比
3、不适合开源开发。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。

SVN中文社区:http://www.iusesvn.com
GIT内容完整性的讨论:http://stackoverflow.com/questions/964331/git-file-integrity

猜你喜欢

转载自blog.csdn.net/heqiang2015/article/details/82432005