精通git中文版 (连载一)

      精通Git

原著 :Scott Chacon schacon@gmail.com

                   译者 :xiaoxuanzi zhaoqx_78@hotmail.com

1.       简介(Introduction)

本书的简介可以放在这儿。

 

2.       开始(Getting Started)

本章将开始介绍Git。我们将在开始来介绍一些版本控制工具的背景,然后介绍怎么让Git运行在您的系统上,最后介绍怎么安装和启动Git。在本章的结束,您应当理解为什么Git如此流行,为什么你应该使用Git以及怎么使安装环境具备。

 

2.1  关于版本控制(About Version Control)

什么是版本控制?为什么你需要关注它?版本控制是一个这样的系统:它记录了一个或一组文件随着时间而做的任何变动,以便您可以在随后获取任何特定的版本。例如,在本书中,你将使用软件源码作为被版本控制的文件,尽管实际上,你可以把计算机上的任何类型的文件做版本控制。

 

如果你是一个图形或web设计师,想保存你的图片或布局的每个版本(你很可能想这么做),一个版本控制系统(Version Control System VCS)是一个非常不错的工具可以完成这件事。它允许你恢复文件返回到前面的状态,恢复整个工程到前面的状态,比较任何随时间的变化,可以查看谁最后修改的东西可能正在导致一个问题,谁在什么时间引入了一个问题等等… 使用VCS也通常意味者如果你把事情弄遭了或者丢失了文件,你可以轻易的恢复它。另外,你只需要花费非常小的代价。

 

2.1.1 本地版本控制系统 (Local Version Control Systems)


许多人选择的版本控制方法是copy文件到另外的目录(也许是一个标明时间的目录,如果他们够聪明的话)。这种方式非常常用,因为它是如此的简单;但这是非常容易发生问题的。你很容易忘记你在哪个目录,以至于你错误的写了一些错误的文件或copy一些文件到你不希望的目录中去。

 

为了处理这些问题,程序员们很久之前就开发了本地的VCS系统:它有一个简单的数据库来记录哪些在版本控制下的文件的所有变更。(如图1-1示)


一个更为流行的VCS工具被称为rcs,这个工具目前仍然被随者很多计算机系统分发。即使是流行的Mac OS X操作系统也包含了rcs命令,当你安装了开发者工具箱时。这个工具的基本工作是以特定的格式在磁盘上保存文件从一个变化到另一个变化的补丁组(patch sets)(也就是说,文件间的不同);这样它可以通过增加所有的补丁来重新创建任何文件在特定时刻的情形。

 

2.1.2 中心化的版本控制系统 (Centralized Version Control Systems)

人们遇到的下一个主要问题是他们需要与工作在其它系统上的开发者们相互协作。为了处理这个问题,中心化的版本控制系统(CVCSs)被开发出来。这些系统诸如CVS,Subversion, 以及Perforce,有一个单独的服务器来容纳所有受控的文件,一系列的客户端可以从这个中心检出(check out)文件。很多年来,这种方式成为了版本控制的标准(如图1-2)



这种系统提供了很多优势:尤其相比较于本地VCS系统而言。例如,每个人都可以在一定程度上知道项目上其它人都在做什么。管理员具有很细密的控制权来控制谁可以做什么;对管理员而言管理一个CVCS比在每个client上处理本地数据库要容易的多。


然而,这种系统也有一些严重的不足之处。最明显的是中心化服务器所面临的单点故障。如果这个服务器宕机了一个小时,则在此一个小时内,没有人可以相互协作或者存储版本变化到他们正在工作的系统中。如果中心数据库的硬盘损坏了,而合适的备份没有被保存,你铁定将丢失所有的东西――整个项目的所有历史记录,除了那些单一的镜像(碰巧某人存储在他们自己的机器上)。本地的VCS系统也会遇到同样的问题――不管什么时候你在一个单一的位置存储整个的历史记录,你都面临者丢失所有这一切的风险。

 

2.1.3 分布式版本控制系统(Distributed Version Control Systems)

从这儿我们引入分布式版本控制系统。在一个分布式版本控制系统(DVCS)(诸如:Git,Mercurial,Bazaar 或者Darcs)中,客户端不仅仅是检出文件的映象(snapshot):他们完全镜像(mirror)库。因此,如果这些客户端系统协作的任何服务器死掉了,任何他们其中的一个客户端库可以被copy到服务器上去恢复它。每次的checkout实际上是对整个数据的全备份。(如图1-3)

 


 

另外,很多这样的系统都可以很好的处理多个可协同工作的远端库,因此你可以与不同的工作组以不同的方式同时工作在同一个项目上。它允许你创建几个不同类型的工作流。这在集中化的系统中,诸如层级模式是不可能实现的。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页