使用Git而不是SVN的理由

重新组建一个崭新新的技术团队有段日子了,在前期Git或SVN作为版本控制系统的选择间做了大量思考。以对更新事物的好奇加上很久以前通过《Git权威指南》的一些了解,最终我还是选择了Git。网上流行的Git和SVN千篇一样的讲着很高大上,所以想粗俗简单的从实际角度讲讲使用Git而不是SVN的理由

首先,Git不会像SVN一样在所有各层目录中都产生一个.svn目录,仅仅是一个 .git目录,处女座的不二选择。

SVN目录中copy文件目录并移动产生的各种问题,特别是windows系统中隐藏了.svn的文件时夹,这类因为copy时带上.svn目录引起的问题我在各种SVN新手身上遇到过,其中有抓掉头发的,也有删掉目录各种重来的,有摔键盘鼠标的,放弃程序员生涯的等等。Git中没有。

此外还有使用eclipse做IDE的同学通过SVN插件的时候一定都有更改目录名称或者目录大小写的痛苦经历,而在Git中类似的文件夹变更绝对很清晰简单。

tag绝对是开发中最基础的功能了,Git的tag是基于指针的(直接指向某个版本),所以可以方便的改变tag指针所指向的版本节点,在做上线tag时因为各种意想不到的bug而要重新打tag时绝对是实用,只用轻轻移动tag的指向到稳定版本就好了了而。SVN不能。

branch也是多特性开发常用功能,在Git中切换各个本地分支只用简单的checkout到某个指定branch就Ok,代码瞬间变成对应分支的,不再需要从IDE新建或者导入项目,对于Java开发这种依赖IDE环境的项目简直是光速。相信使用svn切换到其他branch需要来回折腾环境的同学一定能事半功倍。对于从中大大受益的我需要强调绝对快到接近光速。仅仅这么一点我就爱上了Git。

当然还是要花时间先搭建Git服务的,不过至少在之前回忆中搭建熟悉的SVN服务比Git并不轻松多少(个人觉得SVN的服务其实很麻烦特别是在Linux上),选择一个合适Git服务器(比如gitblit就不错)可以更快解决。对于已经使用了SVN的团队需要做迁移的工作,因为没有相关经验我只能猜测最蠢的也不过把所有库再上传一次到Git服务中(也有迁移的工具不知道好用不)。

关于Git的使用难度,也并没有那么复杂,如果熟悉版本控制的常用功能那么从使用SVN到Git只是换个版本控制客户端(SmartGit很好用)的时间,对于新手来说基本二者的学习曲线一样。

如果仍然觉得一定要会使用Git Command Line才能用Git那么有句真诚的提醒:任何学术的产生都是为了实际应用(不装会死么!?)



本作品采用知识共享署名 4.0 国际许可协议进行许可,欢迎转载内容并请注明出处
《使用Git而不是SVN的理由》 http://io97.com/2015/08/26/10023.html