一、版本控制工具的作用和必要性
版本控制工具的作用:帮助我们记录和跟踪项目中各文件内容的修改变化。
记录文件修改的手工做法:复制文件以备份,在备份的文件名中添加上日期和时间。
需要版本控制工具的原因:为了提高效率,我们希望这类操作是自动进行的,这是我们需要版本控制工具的原因。
二、版本控制工具的分类
版本控制工具(Version Control System)的分为3类:
1、直接访问式版本控制系统;
2、集中式版本控制工具,比如CVS、SVN;
3、分布式版本控制工具,比如git
集中式版本控制工具和分布式版本控制工具的区别在于:开发人员之间相互同步修改内容的方式不同。
三、版本控制工具的发展历程
VCS的发展历程:
(1)、手工阶段,没有版本控制工具或者有但是不用版本控制工具。
(2)、早期VCS阶段:
这类系统要求系统的用户必须登录到版本库所在的服务器才能访问版本库。
局限性:存在可扩展性方面的问题。
(3)、集中式VCS阶段:
CVS和SVN解决上述早期版本控制工具的可扩展性问题。这类版本控制工具允许程序员通过网络来获取版本库中的代码,并且在修改之后提交回来。这类系统解决可扩展性问题是通过客户端来解决的,客户端可以有无数个,但是版本库所在的服务端也还是只有一个,客户端可以随意安装,这样就解决了可扩展性的问题。
具体的使用方法:每一个程序员在本地有一个工作目录树,其内容是该版本库中最新的代码。当他们在工作目录树中完成代码修改之后,就把改动提交会该代码库。
局限性:在本地工作目录树中只会看到代码的最新版本,如果想要查询历史修改记录,就必须与服务器上的版本库打交道。这样要和远程的版本库打交道,就必须使用网络,但是即使今天的互联网处于永不断线的状态,有的时候还是不能上网。所以分布式版本控制工具就解决了这个问题,以git为代表的分布式版本控制工具使每个用户在本地都有自己的版本库,而不是连接到公共服务器上的一个公共版本库中去。
(4)、分布式版本控制工具阶段:
所有的版本控制工具都存储在本地版本库中,向版本库提交代码无需链接远程版本库,所有的历史记录都存储在本地版本库中,向版本库提交代码无须连接远程版本库,而是所有的版本数据都存放在本地版本库中。
分布式版本控制工具程序员之间如何传递各自的修改,如何同步呢?程序员还是将修改上传到项目的主版本库中去。
有两种实现方式:(1)通过git的push操作直接把修改上传到主版本库;(2)生成包含少量修改的补丁包,把补丁包提交给项目维护人员,再由项目维护人员更新主版本库。
四、选择版本控制工具时值得注意的问题
首先、版本控制工具它本身是一个工具,工具是比人工先进一些,但是我们依然可以选择使用它,也可以选择不使用它。
比如在学校的时候一直就没有使用过版本控制工具,写论文、写代码都是在自己电脑上保存,每当自己写的东西有一个新版本产生的时候,就用另存为来再存一份。
其次、不要因为盲目比较版本控制工具的优劣。
即使使用了版本控制工具,也还有不同的版本控制工具之分,有比较早期的cvs、svn,也有最新的git,我们在选用的时候可以按照自己的想法,熟悉什么就选用什么,没有必要一味线性的看待问题,即不用觉得git一定比svn先进,所以使用git就比使用svn好,同样,不要以为使用git就比使用svn高级之类的,能解决问题就好,理智看待这个问题。