软件版本管理选用哪个工具好?

碎在扬花里的文字


什么是版本控制

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。简单来说,版本控制类似有一个程序源码管理员,它主要工作是根据程序员的代码提交记录,记住每次提交新增的文件跟修改的文件, 每个被允许的成员都可以从管理员处获得最新程序源码,也可以获取到以前某一次修改过的程序源码。

版本控制工具工具

版本控制工具有SVN、VSS、GIT、Hg、CVS等,主要在用的有svn与Git。Git用的更广泛。

SVN

SVN是Subversion的简称,目前是Apache项目底下的一个开放源代码的版本控制系统,它的设计目标就是取代CVS。

优点

1、集中式管理,管理方式在服务端配置好,客户端只需要同步提交即可,使用方便,操作简单,很容易就可以上手。

2、在服务端统一控制好访问权限,利用代码的安全管理。

3、所有的代码已服务端为准,代码一致性高。

缺点

1、所有操作都需要通过服务端进行同步,这会导致服务器性能要求比较高。如果服务器宕机了就无法提交代码了。

2、分支管理不灵活,svn分支是一个完整的目录,且这个目录拥有完整的实际文件,这些操作都是在服务端进行同步的,不是本地化操作,如果要删除分之,也是需要将远程的分支进行删除,这会导致大家都得同步。

3、需要联网。如果无法连接到SVN服务器,就无法提交自己的代码,更别说还原、对比等操作了。如果在内网还好,网速比较稳定,同步相对比较快,如果是通过外网同步,有可能就需要同步很久。

Git

git是Linus Trovalds大神的作品,是一个开放源码的版本控制软件。与SVN最大的区别,就是分布式的管理。

优点

1、分布式开发时,可以git clone克隆一个本地版本,然后在本地进行操作提交,本地可以完成一个完整的版本控制。在发布的时候,使用git push来推送到远程即可。

2、git分支的本质是一个指向提交快照的指针,速度快、灵活,分支之间可以任意切换。都可以在本地进行操作可以不同步到远程。

3、冲突解决,多人开发很容易就会出现冲突,可以先pull远程到本地,然后在本地合并一下分支,解决好冲突,在push到远程即可。

4、离线工作,如果git服务器出现问题,也可以在本地进行切换分支的操作,等联网后再提交、合并等操作。

缺点

1、git没有严格的权限控制,一般是通过系统设置文件的读写权限来做权限控制。

2、工作目录只能是整个目录,而svn可以单独checkout某个有权限的目录。

3、git上手可能没有svn那边顺手,需要经过学习一下。

选那个版本

具体选哪个版本大家可以自行判断,相对来说svn比较简单,Git比较复杂。我本人以前一直用svn,一直感觉不错。后来换Git主要是大部分开发者在用Git,这个你看github与码云就能知道,在这里推荐一个非常好的Git管理工具,就是Github的桌面软件github desktop。这个工具是依托Github,简单易上手。如果你选择使用码云托管代码,可以使用码云同步Github代码的功能,依然使用github desktop。

以下是github desktop截图


不会修电脑的技术宅


现在一般使用git更多一点。如果没有特殊需求,那就git吧。