Pro Git 转载 - 1.1 起步 - 关于版本控制

转载序:

最近单位开始用Git,网上虽然有各资料,然而大多顾此失彼。

这是git官网上找到的书 http://git-scm.com/book,显然不是速成资料。如需快速上手,原作推荐第二章。

版权:

The entire Pro Git book, written by Scott Chacon and Ben Straub and published by Apress, is available here. All content is licensed under the Creative Commons Attribution Non Commercial Share Alike 3.0 license. Print versions of the book are available on Amazon.com.

1.1 起步 - 关于版本控制

本章关于开始学习 Git。 我们从介绍有关版本控制工具的一些背景知识开始,然后讲解如何在你的系统运行 Git,最后是关于如何设置 Git 开始你的工作。 通过本章的学习,你应该了解为什么 Git 这么流行,为什么你应该使用 Git 以及你应该如何设置以便使用 Git。

关于版本控制

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

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

本地版本控制系统

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

为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。

Figure 1-1. 本地版本控制.

其中最流行的一种叫做 RCS,现今许多计算机系统上都还看得到它的踪影。 甚至在流行的 Mac OS X 系统上安装了开发者工具包之后,也可以使用 rcs 命令。 它的工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。

集中化的版本控制系统

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

Figure 1-2. 集中化的版本控制.

这种做法带来了许多好处,特别是相较于老式的本地 VCS 来说。 现在,每个人都可以在一定程度上看到项目中的其他人正在做些什么。 而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。

事分两面,有好有坏。 这么做最显而易见的缺点是中央服务器的单点故障。 如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。 本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

分布式版本控制系统

于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

Figure 1-3. 分布式版本控制.

更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

时间: 2024-10-12 19:41:49

Pro Git 转载 - 1.1 起步 - 关于版本控制的相关文章

Pro Git 转载 - 目录

转载序: 最近单位开始用Git,因为我天资的原因,花了好多时间,也没理解个所以然. 这是git官网上找到的书 http://git-scm.com/book,显然不是速成资料.如需快速上手,原作推荐第二章. 版权: The entire Pro Git book, written by Scott Chacon and Ben Straub and published by Apress, is available here. All content is licensed under the 

【Tools】Pro Git 一二章读书笔记

记得知乎以前有个问题说:如果用一天的时间学习一门技能,选什么好?里面有个说学会Git是个很不错选择,今天就抽时间感受下Git的魅力吧. Pro Git (Scott Chacon) 读书笔记: 第一章:Git起步 版本控制出现的原因及分类 类别 基本原理 优点 缺点 本地版本控制系统 自己把复制整个项目,改名或加上备份时间来区别 采用某种简单的数据库来记录文件的历次更新差异 简单 有时会混淆所在的工作目录, 丢了文件毛了数据就没有后退的路 集中化的版本控制系统 解决在不同系统上的开发者协同工作,

[Git00] Pro Git 一二章读书笔记

记得知乎以前有个问题说:如果用一天的时间学习一门技能,选什么好?里面有个说学会Git是个很不错选择,今天就抽时间感受下Git的魅力吧. Pro Git (Scott Chacon) 读书笔记: 第一章:Git起步 版本控制出现的原因及分类 类别 基本原理 优点 缺点 本地版本控制系统 自己把复制整个项目,改名或加上备份时间来区别 采用某种简单的数据库来记录文件的历次更新差异 简单 有时会混淆所在的工作目录, 丢了文件毛了数据就没有后退的路 集中化的版本控制系统 解决在不同系统上的开发者协同工作,

《Pro Git》阅读随想

之前做版本管理,我使用最多的是SVN,而且也只是在用一些最常用的操作.最近公司里很多项目都开始上Git,借这个机会,我计划好好学习一下Git的操作和原理,以及蕴含在其中的设计思想.同事推荐了一本<Pro Git>,读起来感觉很好,在这里分享下阅读时的思考.此书的在线阅读地址:http://iissnan.com/progit/ 第一章 起步 这一章介绍了Git的相关历史和基本特点,以及安装配置方法.这里提到的Git的特点包括“直接记录快照,而非差异比较”.“近乎所有操作都是本地执行”.“时刻保

Pro Git CN Plus

Git — The stupid content tracker, 傻瓜内容跟踪器.Linus 是这样给我们介绍 Git 的. Git 是用于 Linux 内核开发的版本控制工具.与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便. Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要. Git 最为出色的是它的合并跟踪(merge tracing)能力. 实际上内核开发团队

《Pro Git》笔记3:分支基本操作

<Pro Git>笔记3:Git分支基本操作 分支使多线开发和合并非常容易.Git的分支就是一个指向提交对象的可变指针,极其轻量.Git的默认分支为master. 1.Git数据存储结构和分支 git提交时会将暂存文件的内容,暂存的目录结构,提交对象,含附注标签对象都以包含信息头的二进制文件形式存储到版本库中(.git/objects目录),存储的对象以其自身SHA1值作为唯一标识,SHA1前两位为存储对象所在目录名,SHA1后38位为存储对象的文件名.存储的数据对象类型有: blob(文件内

【重要】Pro Git 第二版 简体中文

不管是入门还是精通git,下面这本书都是必读,同时它也是官方推荐书籍. Pro Git 第二版 简体中文 我自己还收集了一份网页版的progit,但可能不是progit第二版. 下载地址 http://download.csdn.net/detail/lhat_7/9840352 网页阅读地址 http://git.oschina.net/progit/

Git学习圣经《Pro Git》第二版

Git已经成为最流行的分布式版本控制系统,GitHub.CSDN CODE等提供的代码托管服务都是基于Git的.<Pro Git>由GitHub员工Scott Chacon和另一位爱好者Ben Straub共同编写,主要介绍了Git使用基础和原理,适合Git爱好者和初学者参考. 官网:http://git-scm.com/book/en/v2中文翻译:http://git-scm.com/book/zh/v1(第一版) 各种格式下载: PDF格式 Epub格式 Mobi格式 HTML在线阅读

Pro Git 读书笔记 初识Git

版本控制系统即VCS(version control system)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 除了对软件源代码的文件作版本控制,实际上,你可以对任何类型的文件进行版本控制.有了版本控制我们就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致bug出现的原因,又是谁在何时报告了某个功能缺陷等等. 分布式版本控制系统(Distributed Version Cont