小孩神游的专栏

这个章节将会介绍开始使用Git。我们将从版本控制的背景,如何在你的系统上使用Git到最后如何利用它工作来介绍。到章节的最后你将会明白为什么Git那么流行,你为什么要使用它和怎样使用它。

关于版本控制

什么是版本控制,为什么你应该关心它呢?版本控制是一个随着时间的推移记录你更改某个文件或者文件集的系统,这样你可以在以后回顾你之前的特定版本。以在本书中你将对软件源代码控制为例,但在现实中你可以对任何类型的文件这样做。

本地版本控制系统

很多人选择的版本控制系统的思想是复制文件到另外一个文件夹(如果他们比较聪明,可能会给文件夹加时间标记)。这个方法非常常见因为太简单,但它也极容易出错。

你很容易忘记把文件放入了哪个目录并且不小心写了错误的文件或者复制过来了你不想要的文件。

去解决这个问题,编程人员很早之前开发了本地版本管理系统带有一个简单的数据库保存所有对文件的改变。

本地版本控制

RCS是非常流行版本控制工具中的一个,到今天还分布在很多电脑中。即使是当前流行的Mac OS X操作系统当你安装开发工具时还会包含rcs命令。RCS通过一个特殊的格式把补丁(即,文件之间的差异)保存在磁盘上来工作,然后它可以再重新创建在任何时候添加了补丁的文件。

集中式版本控制系统

人们遇到的下一个主要问题是他们需要和使用其他操作系统的开发者协调工作。为了解决这个问题,开发了集中式版本控制系统(CVCSs)。这些系统,比如CVS,Subversion和Perforce,有一个单独的服务包含所有版本的文件,同时大量的客户端从那个中心位置查看文件。集中式版本控制系统在很多年的时间里成为了版本控制的标准。

这种设置提供了很多优点,特别是对比本地版本控制。举个例子,每个人都知道其它人在这个工程上做到什么程度。管理员可以很好授权哪些人可以做哪些事情。相比较于处理每个客户端的本地数据库,管理集中式版本控制系统更容易。

集中式版本控制

可是,这种配置也有很多严重的缺点。最突出的是集中式服务代表的单点故障。如果那个服务器宕机一个小时,那么在这一个小时内每人可以协同工作或者保存它们的工作。如果保存中央数据库的磁盘损坏,并且你没有保存合适的备份,你失去了绝对的一切–这个工程的整个历史除非人们碰巧在本地机器上有工程的快照。本地版本控制系统有着同样的问题——当你把这个工程历史保存在一个单独的地方时,面临着失去一切的风险。

分布式版本控制系统

这是分布式版本控制系统(DCVSs),对于一个DCVS(比如Git,Mercurial,Bazaar 或者Darcs),客户端不仅仅检查文件的最新快照;它们关心整个仓库。因此,如果任务服务器挂了,而这些系统是通过它合作,任何客户端仓库可以复制备份到服务器来恢复它。每一次克隆都是所有数据的完整备份。

分布式版本控制

此外,许多这些系统可以很好的处理一起工作的多个远程仓库,,这样你就可以与不同的人群以不同的方式在一个项目中进行合作。这使你可以设置多种类型的工作流程而在集中式系统里是不可能的,比如分层模型。

原文:

我想一个人旅行,背上简单的行囊,踏上行程,

小孩神游的专栏

相关文章:

你感兴趣的文章:

标签云: