版本控制系统

  Github是全球最大的开源项目托管平台,这个平台在技术领域也非常有影响力,代码托管必然离不开版本控制,下面就介绍一下版本控制系统。

Q1:什么是版本控制系统?

A:版本控制系统的英文名叫做VCS(Version control system),版本控制系统是以记录目录或文件的改变为基础的。试想一下,如果没有版本控制系统,我们开发一个项目若想记录每个版本,可能每次改动都要另存为一个新的文件,这样的后果是,在若干版本中我们很难找到我们想要的历史版本,就算找到,也很难找出所有被改动的位置。我们有了版本控制系统会发生什么变化那?我们可以轻松快速准确找到提交人、提交时间、版本概述、具体哪些内容发生了变化等。

Q2:版本控制系统的功能?

A:1、记录版本差异。在版本控制系统的帮助下开发项目,每一处改变例如新增、修改、移动文件或删除目录等都会被自动地记录下来,当你提交新版本的时候,系统会把所有改变汇总成一个集合,现在项目包含的所有文件为一个新的版本。

  2、代码备份。仓库(repository)(一个项目一旦被版本控制工具控制,就被称为仓库)可以记录当前和历史版本的所有信息(提交人、提交时间、版本概述、具体哪些内容发生了变化等),支持代码的恢复,有利于从宏观上把握进度和方向。

  3、代码共享。通常仓库是放在特定服务器上,这样团队成员可以随时克隆、提交和更新代码。代码提交与更新时会有冲突提示,非常利于多人合作。遇到问题可以查看别人的代码,即使发现bug也可以轻松找到责任人。

  4、创建分支(branching)与合并(merging)。版本控制系统支持创建分支。当为项目增加新功能但是有可能影响项目整体稳定性时可以复制仓库到分支下,分支和主干互不影响。当分支内容趋于成熟和稳定时,可以与和主干进行合并。(博主大大感觉分支的概念不太好理解,不懂看这里!

Q3:版本控制系统基本概念?(参考文档1 ;参考文档2

A: 1、追踪变化。根据版本控制系统的不同,有的可以追踪出哪个文件发生了变化,有的甚至可以追踪出文件所有细节的变化,包括字符和字节的变化。

  2、提交版本(committing)。在版本控制系统的帮助下开发项目,每一处改变例如新增、修改、移动文件或删除目录等都会被自动地记录下来,当你提交新版本的时候,系统会把所有改变汇总成一个集合,现在项目包含的所有文件为一个新的版本。

  3、修订版本(revisions)和变更集(changeset)。当用户提交了一个版本,所有的变化以变更集的形式记录了下来,成为一个独特的修订版本,版本号可能是递增的数字或独特的哈希值,这是由具体的版本控制系统决定的。变更集不仅包括项目内容的变化,还包括提交人、提交时间、版本概述等。有了如此详细的信息,开发项目不仅井井有条,而且效率会大增。

  4、下载更新(update)。项目每天都在开发中,我们需要及时更新得到最新的代码。通常代码被提交到具体的服务器上,团队成员通过服务器获得最新的代码。

  5、冲突处理(conflicts)。冲突发生在下载更新(update)或提交版本(commit)时。例如,A和B昨天同时在服务器无冲突地更新了代码,A改了C文件,于昨日提交,B于今天改了C文件,此时无论B下载更新或提交版本都会提示C文件冲突。系统会提示冲突版本的具体差别。现在解决的办法是B去和A沟通,看看是进行代码的融合还是选取其中一人的版本做为最终的版本。

  6、分支与合并,同Q2。

Q4:版本控制系统的分类?(参考文档

A: 1、本地版本控制系统。仅支持本地的操作。对于每个版本,保存的是文件修订前后的变化。每个版本是通过记录变化的文件运算后得到版本的具体内容。优点:开创版本控制先河。缺点:不支持团队协作,数据丢失难找回。本地版本控制系统最流行的是rcs。

  2、集中式版本控制系统(CVCS)。有一个单一的集中管理的服务器,保存所有的修订版本。提交版本或者下载更新都要通过客户端来连接服务器。但是本地保存的是最新的文件而不是代码仓库的完整映像。优点:利于团队协作、权限管理。缺点:过于依赖服务器(本地没网或服务器宕机无法查看历史记录)、数据丢失难找回。集中式版本控制系统的代表是CVS、subversion

  3、分布式版本控制系统(DVCS)。本地保存代码仓库的完整映像,提交版本或者下载更新要通过客户端来连接服务器。许多这类系统都可以指定和若干不同的远端代码仓库进行交互。优点:利于团队协作、权限管理、服务器依赖性降低、数据丢失易恢复、灵活性高。分布式版本控制工具的代表是Git。

 

posted @ 2015-07-02 17:40  孙灿  阅读(339)  评论(0编辑  收藏  举报