《精通Git》翻译系列(一)

Git软件包本身包含了所有的官方说明文档。

http://cl.ly/da7a450319adfac01108

书名叫Pro Git,暂且译作《精通Git》吧。

第一章 准备开始(预备章节)

本章我们将开始接触并使用Git。在开始之前我们先来介绍下有关版本控制工具的背景知识,然后我们将讲解如何在你的系统上运行他,如何设置他才能让他正确的运行。

本章的最后你可能会明白为什么Git这么流行,你将知道你为什么要使用他,为什么你们要这样设置他。

1.1 关于版本控制

什么是版本控制?为什么你要关注他?首先版本控制是一个系统,他用来记录你一直以来对文件或文件集所做的操作,然后你可以将你的文件回滚到某个特定的版本。虽

然本书里所展示的示例都是对源代码类型的文件进行版本控制,但事实上任何类型的文件都可以进行版本控制。

如果你是一个图形或网站设计师并且你想保存每一个版本下的图形或者网站布局文件(你确定需要保存的),那么使用版本控制系统(以后简称VCS)是一个十分明智的

选择。VCS有以下功能:

1、可以让文件恢复到先前的一个状态。

2、可以让整个项目恢复到先前的一个状态。

3、比较每次的改变内容。

4、或许你的文件会产生一些问题,他可以检查到是谁最后一次修改了这个文件而产生了这些问题等等。

使用VCS意味着你可以把文件搞乱或者丢失某些文件,你可以使用他很轻松地恢复这些文件,并且做到这些你只需花费非常少的开销。

 局部版本控制系统

很多人选择将一个文件夹复制到另外的目录内(如果他们很聪明的话一般会按照时间给目录命名)作为版本控制系统的方法,这是一种普遍的方法,因为他太简单了,但是

这也极其容易出错。你也很容易就忘记你把文件放在哪个目录里了,并且有可能不慎将文件放错,还有可能忽略一些你并不打算忽略的文件。

为了解决这个问题,在很久以前程序员就开发了一个带有数据库的局部版本控制系统,把所有文件的改变操作都存放在数据库里以便于版本控制。

看图示:1-1

图示1-1 局部版本控制系统关系图

其中最流行的vcs工具是一个叫rcs的系统,直到今天依然有很多人在他们的电脑上使用他。即便是在比较流行的Mac OS X操作系统上,当你安装开发工具的时候也会包含

了rcs命令。该工具主要是靠在磁盘上以某种特定的格式保存文件从一个版本到另一个版本的时候产生的差异性(两个文件之间的差异)工作的。通过合并所有的差异,你可

以在任何一个轻松的重建某个文件。

集中版本控制系统

下个主要问题是开发者可能会遇到和其他的开发者一起在其他系统上进行开发工作的情况。为了解决这个问题,集中版本控制系统(CVCSs)被迫出炉了。这些系统,比如CVS, Subversion,和Perforce

都有一个单一的服务器来存放所有的带有版本标记的文件,有很多客户端可以从中心点签出文件,很多年过去了,这一直被作为标准的版本控制系统。

如图1-2:

图示:1-2 集中版本控制系统

这种应用展示出了很多优势,尤其是相对于局部版本控制系统。比方说,每个人都很清楚的知道其他人在此项目上做了什么。使用CVCS管理员可以将权限细分到某个人可以做什么,而且远远强过管理员

在每台电脑上操作数据库里配置各个人员的权限。

然而这种应用也有其致命的缺陷,最明显的就是他是单点的,一旦中央服务器出现故障就会影响其他客户端的开发。如果服务器宕机一个小时,在这个小时内没有人能够合作开发,并对他们所作的工作保

存版本标记。如果说中央服务器的硬盘坏掉了,还没有进行完整的备份,你将丢失那些除了在他们各自在本地保存的快照之外的所有文件。(此时你简直就想买块豆腐撞死,哎,心血付之东流了,情何以堪

局部版本控制系统同样面临这样的问题,如果你将所有文件放在同一个地方,你是在冒着丢失所有文件的风险。看看,^_^备份是多么重要。

分布式版本控制系统

由于以上问题的存在,分布式版本控制系统应运而生(其实我发现被逼急了,总会有新事务出现的)。在分布式版本控制系统中(如Git, Mercurial, Bazaar 或者 Darcs),客户端不仅仅签出最新的

快照文件,他们将镜像整个版本库。如此一来,任何一个服务器宕机,其他的系统都可以经由另一个服务器继续进行合作开发,可以从本地的任何一个版本库中拷贝文件进行恢复。每一个签出都是对所

有数据的完整备份。

如图:1-3

图示1-3 分布式版本控制系统

而且,这些系统中的大多数对远程版本控制开发都处理的非常好,由此,你可以和别的组的成员同时开发同一个项目。这允许你设定不同的工作流程,这些流程是在集中版本控制时代无法实现的,比方

说分层模式。

原文地址:https://www.cnblogs.com/24la/p/2851706.html