最近在学习搭建git服务器,也具体学习下了git相关知识。因而有想和svn想比较下。
在以前不同公司都有使用过git和svn,个人感觉都还挺方便的。具体到工具的整体性,没有深究,简单总结下个人对这两工具的看法。有不足的地方,请多多指教
1.Git是分布式的,svn不是
Git部分
一般来说,Git是分布式的,但还是会有一个Git中央服务器。开发人员下载代码的时候,会克隆一个版本库在自己的电脑上。在断网的情况下,开发人员依然能够提交文件
、查看版本信息,创建分支等;而SVN在断网的情况下不能。短时间断网的话,对开发影响应该是不会很大。
重要的一点:如果中央服务器的代码库挂掉,而且不能恢复的话,Git由于在开发人员上有克隆的版本库,可以快速恢复;而SVN确不能这样。
SVN部分
SVN工作必须要求联网,局域网网速快,还好说,外网的话,就看网速了。如果中央服务器出问题,对工作影响比较大。即便能快速恢复,但是也没办法查看以前版本信息
和提交记录之类的了。
网络正常的情况下,两个用起来都是挺方便的
2.Git分支和SVN分支不同
Git部分
Git分支管理很强大,可以很容易创建分支、切换分支、合并分支。
SVN部分
映像中,对SVN用的不多。在以前一个开发阶段完成后,都是打一个版本,把代码放到SVN另外一个目录中去。
3.更新提交机制不同
Git部分
Git比SVN多了一个暂存区的概念,首先,新增和修改过的文件都会先存在暂存区里面,通过commit提交到本地分支;然后,从下载代码到本地的Git库;最后,合并代码,再提交。重要的一点,本地的Git版本不是最新的话,是无法提交代码的
SVN部分
SVN没有暂存区的概念,一般commit的话,会把代码直接提交到服务器上面。如果没update代码,就commit的话,很可能发生代码覆盖的问题。