根据自己平时的使用,来比较下GIT与SVN的不同。

1. GIT是分布式的,而SVN不是,这是最核心的区别。

当然GIT跟SVN一样也有集中式版本库或服务器,但GIT更倾向于分布式开发。因为每个开发人员的电脑上都会有一个本地仓库,可以独立的对代码进行修改,即使没有网络也一样可以Commit,查看历史版本记录,创建项目分支等操作,开发者之间不受影响,更有利于团队成员之间的协作。

2. 版本库,SVN只有一个指定的中心版本库,GIT可以有无限个版本库。

如果中心版本库挂了,那么SVN就不能再工作,所有开发人员都不能进行代码管理操作,直到恢复。而GIT不受中心版本库的控制,可以本地管理,网络恢复时,将本地代码Push到远程中心服务端仓库即可。

3. GIT把内容按元数据方式存储,而SVN是按文件。

SVN所有的资源控制系统都是把文件的元信息隐藏在一个.svn的文件夹里,每个目录下都会有一个.svn文件。而.git目录是处于个人机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签、分支、版本记录等。

4. 创建分支方便、快捷。

创建分支的时候,SVN相当于在原来的分支上把所有的文件都拷贝了一份,而GIT只是获取文件的每个版本的元素,然后载入主要的分支,不需要拷贝原文件。不仅大大减少了存储空间,创建分支的效率也高很多,特别是大工程。

而且每个开发者都可以在本地随意的创建分支,用完后删除即可,根本不影响他人。

5. 分支切换。

GIT的不同分支都在同一目录下,可以快速的在几个分支之间切换。而SVN不同的分支在不同的目录下,需要进入不同的目录。

6. 提交(commit)。

在SVN提交就直接到中心版本库了,GIT的提交是本地的活动,先提交到本地仓库,而且有一个缓存的过程,可以先添加到缓存再提交,等全部开发完成后再push到中心版本库即可。

这样的好处是,可以方便地保存记录整个开发过程,更好的管理阶段性代码。对于一个大项目需要很长一段时间开发,开发过程难免修修改改,GIT可以很轻易的查看每天commit的代码,即使是不完整的中间思路。

而使用SVN我们都只会在保证代码正确,不会影响原有功能的情况下才会上库,不然我们将无法阻止严重问题的蔓延。

7. GIT是开源的,有活跃的开源社区。

8. GIT没有一个全局版本号,而SVN有,这是跟SVN相比GIT缺少的一个特征。

9. SVN的权限控制比GIT做的好,因为这个原因很多公司还是用SVN,毕竟代码是软件的核心竞争力,权限控制也很重要。