原文:原文链接 略做删减,便于理解

如果只想简单的进行版本控制,请直接参照 tortoisehg使用或者 svn使用

版本控制入门

版本控制(Version Control)的作用是追踪文件的变化。

为什么需要版本控制?

简单说,就是当你出错了,可以很容易地回到没出错时的状态。 你可能已经在不知不觉中,布置了自己的版本控制系统。比如,创建了类似下面这样的文件名:

 * 文档20110106.doc
 
 * 文档20110120.doc
 
 * wuhan-logo.png
 
 * jinzhou-logo.png
 
 * beijing-logo.png

这就是软件中为什么有“Save As”命令的原因。它使得你可以在不破坏源文件的基础上,得到一个类似的新文件。文件的多版本保存是一个常见问题,通常的解决办法是这样的:

  1. 做一个文件备份(比如Document.old.txt)。
  2. 在文件名中加入版本号或日期(比如Document_V1.txt,DocumentMarch2007.txt)。
  3. 在多人编辑的环境下,共享一个文件目录,并且要求每个人编辑完以后,在文件上做出标识。

什么是版本控制系统(VCS)?

通过文件名识别版本,对于小型项目或者单个文件也许可行。但是对于软件开发来说,是不适用的。

你能想像吗,要是Windows操作系统的源文件,是在一个叫做“Windows2007-Latest-UPDATED!!”的共享目录中开发的,并且每个程序员都可以编辑,都有一个自己的子目录,那会发生什么情况?那么,Windows就根本不可能被制造出来。

大型的、频繁修改的、多人编写的软件项目,需要一个版本控制系统(简称VCS,行话叫做“文件数据库”),追踪文件的变化,避免出现混乱。

一些术语

大多数VCS都有下面一些共同的概念,不过名字可能会稍有不同。

基本概念

 * Repository (repo): 储存文件的数据库。
 
 * Server: 储存repo的计算机。
 
 * Client: 连接repo的计算机。
 
 * Working Set/Working Copy: 当你编辑文件时,编辑对象所在的本地文件目录。''
 
 * Trunk/Main: repo中储存代码文件的主位置。你可以把代码想像成一棵家族树,"trunk"就是主线的那条树干。

基本操作

 * Add: 将一个文件第一次加入repo,也就是开始用VCS追踪这个文件。
 
 * Revision: 文件的版本编号(即v1, v2, v3等等)。
 
 * Head: repo中保存的文件最新版本。
 
 * Check out:从repo中下载一个文件。
 
 * Check in: 上传文件进入repo(如果文件发生了变化)。这个文件将得到一个新的版本编号,用户将可以"check out"这个文件。
 
 * Checkin Message: 描述所做修改的短说明。
 
 * Changelog/History: 一个记录文件自从创建开始所有变动的清单。
 
 * Update/Sync: 将你本地的文件同repo中最新版本进行同步的过程。这将使得本地文件始终能够跟上最新的变动。
 
 * Revert: 放弃对文件所做的编辑,从repo中重新获得未编辑前的版本。

简介完毕,更详细的信息请参照原文