首页 » 读书笔记 » ProGit 读书笔记

ProGit读书笔记

第1章 起步

版本控制系统 - VCS。

  • 本地版本控制系统 - rcs。工作原理基本就是保存并管理文件补丁(patch)。
  • 集中化的版本控制系统 - Centralized Version Control Systems,即CVCS。集中管理的服务器。这类系统包括:CVS,Subversion、Perforce。它的问题是单点故障。
  • 分布式版本控制系统 - Distributed Version Control System,即DVCS。例如:Git、Mercurial、Bazaar、Darcs等。

DVCS的好处:客户系统中有完整的代码仓库镜像,当Server故障,可以用任一本地镜像将代码仓库恢复;客户系统也可以和多个不同的远端代码仓库交互。例如我们在GitHub维护一个代码仓库,又在真实的线上服务器映射一份代码仓库,参考用git发布网站

Git简史。Linux内核维护花了很多时间在提交补丁和保存归档的繁琐事务上(1991-2002)。2002年后,启用BitKeeper管理维护代码。2005年,BitKeeper商业公司同Linux内核社区合作关系结束,Linux社区吸取教训,由Linus Torvalds牵头开发一套自己的版本控制系统。

Git基础要点。

1. Git关心数据文件的整体是否变化,而非单个文件内容的具体差异。普通系统记录每次提交有哪些文件作了更新,以及更新了哪些行,它们的工作方式如下:

SVN工作方式

Git不保存差异数据。Git把文件做一个快照,若文件没有变化,则只对上次的快照作一个连接,它更像是一个小型的文件系统。Git的工作方式如下图。

SVN工作方式

2. Git大多数操作在本地进行,不用连网。想想以前用SVN对比服务器差异时的等待就毛骨悚然,不知如何熬过的。

3. Git时刻保持数据完整性。Git对数据计算校验和(checksum),并作为数据唯一标识和索引。当文件在传输中变得不完整,或磁盘损坏,Git能立即发现。Git使用SHA-1算法计算校验和。

4. 大多操作仅添加数据。

5. Git的3种状态。任何一个文件,Git内部只有3种状态:

  1. 已提交(commited) - 文件已保存在本地库中。
  2. 已修改(modified) - 文件修改了,但没有提交保存。
  3. 已暂存(staged) - 把已修改的文件放在下次提交时要保存的清单中。

分享

0