git和svn是我们开发人员最常用的两种版本控制工具,我最早是用svn的,但是随着项目组研发人员增多,不少问题开始暴露出来,我渐渐转到了git阵营。所以我是比较有资格评论一下二者的优劣的。
首先,工作原理不一样,svn是一种集中式的版本控制器,git是一种分布式的版本控制器。svn只有一个中心仓库,所有开发人员维护同一个服务器上的代码。而git不同,每个开发人员的本地都是一个独立的服务器仓库。
其次,分支管理不一样,svn的分支是全局的,你修改一个分支,所有人必须同步这个分支,才能进行其他操作。git可以本地建立多个分支,并且自由切换,不会影响到其他人。如果有需要就合并到master分支,然后push到远端服务器,让大家同步;如果没用也可以直接delete掉。
另外,安全机制不一样,svn容易出现单点故障,如果服务器宕机,那么所有人都无法工作了。git的话,即使服务器挂了,每个研发的本地都相当于一个服务器,还可以进行正常的开发工作。
个人的理解就这么多,如果还有其他方面,欢迎评论补充。