Git 和 SVN 的区别?
写在前面:
git和SVN都是一个版本管理工具,没有孰优孰劣之分,在这里,只是简单的说一说git和svn的优缺点。选用哪一个看自己公司的实际情况而定。
1) 核心的区别在于git是分布式的,SVN不是。但git不是唯一的分布式的版本管理工具,还有像Mercurial等分布式版本管理工具,也有像SVN一样的集中式版本管理工具,例如VSS,CVS等。Git跟SVN一样有自己的集中式版本库和Server端,但Git更倾向于分布式开发,因为每一个开发人员的电脑上都有一个Local Repository,所以即使没有网络也一样可以Commit,查看历史版本记录,创建项目分支等操作,等网络再次连接上Push到Server端。这一点是非常讨喜的。
2) Git把内容按元数据方式存储,而SVN是按文件:因为.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。.git目录的体积大小跟.svn比较,你会发现它们差距很大。
3) Git没有一个全局的版本库,SVN有。
4) Git的内容完整性优于SVN。因为git的内容存储使用的是sha-1哈希算法。
5) Git可以有无限个版本库,SVN只能有一个指定的中央版本库。
6) SVN有一个致命的缺点,当SVN中央版本库有问题时,所有的工作成员都一起瘫痪直到版本库维修完毕或者新的版本库建立完成。每一个git都有一个版本库,区别是它们是否拥有活跃目录。如果主要版本库有问题,工作人员仍然可以在自己的本地版本库提交,等主要版本库恢复即可。工作人员也可以提交到其他的版本库!
写在后面:
Git最大的特点是分布式,工作人员可以在任何地点工作,没有网络也可以,但相对而言安全性可能会差一点。SVN特点是集中式,虽然对人员有限制,但是在安全这方面也会优于git。Git的操作相对于SVN来说会难一点,但实际上,程序员用git比用SVN多。