[每周一书]《Pro Git》轻松学习版本控制

欢迎加入 Kindle 伴侣 QQ 读书群 544733048 实时交流。付费自动入群,禁止讨论 Kindle 硬件。

什么是“版本控制”?我为什么要关心它呢?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。在本书所展示的例子中,我们对保存着软件源代码的文件作版本控制,但实际上,你可以对任何类型的文件进行版本控制。

如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本(这或许是你非常渴望拥有的功能),采用版本控制系统(VCS)是个明智的选择。有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。但额外增加的工作量却微乎其微。

许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的好处就是简单,但是特别容易犯错。有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。

为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。如 RCS,它的工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。

接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作? 于是,集中化的版本控制系统(CVCS)应运而生。这类系统,如 Subversion,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。

虽然相较于老式的本地版本控制系统来说,这种做法带来了许多好处,但有一个显而易见的缺点,那就是过于依赖中央服务器。一旦出现宕机,那么在宕机的这段时间内,谁都无法提交更新,也就无法协同工作。如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

于是分布式版本控制系统(DVCS)面世了。在这类系统中,如 Git,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。而且,这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

《Pro Git》这本书涵盖了 Git 的基础用法、分支特性、搭建和配置 Git 服务器、分布式工作流程、GitHub 的使用方法、Git 工具、Git 内部原理等各个方面内容,最后还附带了 Git 命令参考。零基础的初学者可以通过前 3 章成为一名个人 Git 用户,后几章能够满足中高阶用户深入了解的需求。书中提供了大量的应用案例,不同开发工作模式有不同的用法,配合插图演示版本变化的状态,十分易于理解。

注:本文摘自《Pro Git》的“起步”章节

——————–

progit

作者:Scott Chacon / Ben Straub
评分:9.1

Git 已经成为最流行的分布式版本控制系统,GitHub、CSDN CODE 等提供的代码托管服务都是基于 Git 的。《Pro Git》由 GitHub 员工 Scott Chacon 和另一位爱好者 Ben Straub 共同编写,主要介绍了 Git 使用基础和原理,适合 Git 爱好者和初学者参考。

* 此电子书会持续更新,以上提供的是在 2015.12.02 更新的版本,最新版本可访问官方下载页面,在页面左侧选择你要下载的电子书格式。当然,除了下载电子书外,你也可以直接在线阅读。

电子书下载(网盘下载):

百度网盘本地下载Google Drive

Resilio Sync 同步:

* 注意:Resilio Sync 是更自由的去中心化分享方式。如果您用的是 Windows 或 Mac OS X 系统,请先下载安装相应版本 Resilio Sync Mac 客户端。如果您用的是 Android 或 iOS 系统,请在各自应用商店中搜索“Resilio Sync”并下载安装。然后根据下面提供的任一方式,将电子书同步到你的电脑或手机中。设置好后,每周的电子书都会自动同步到您的电脑或手机中,不需要每次都手动下载。

有帮助,[ 捐助本站 ] 或分享给小伙伴:

发表评论

标注为 * 的是必填项。您填写的邮箱地址将会被保密。如果是在本站首次留言,审核后才能显示。
若提问,请务必描述清楚该问题的前因后果,提供尽可能多的对分析该问题有帮助的线索。