Git 基本原理

以前曾经研究过 git,不过停留得比较表面,laracast 有一个系列,专门介绍 Git,可惜只有第一集免费,现在穷得叮当响,于是只好根据第一集的指引,自己去看官方文档。

Centralized Version Control VS Distributed Version Control

记得以前在巨灵的时候,上班第一天就要学习怎样使用 Visual Source Safe(VSS),这应该是我第一次接触 version control,当然那时候并不知道这是 version control,只是看做一个类似团队 wikipage 的东西,有很多工作文档,可以多人预览,但是只能同时有一个人在编辑。

现在回想起来,那应该是 Centralized Version Control 的一个典型应用,所有的文件在存在服务器,我们本地是没有备份的,服务器一旦挂掉就全部完蛋。

Distributed Version Control 是反其道而行之(图侵删),在每一个本地保留所有 version 的备份,Git就是这么做的。

version control

仔细阅读了官方文档,才知道,每次 Git clone 就会在本地产生一个 full copy,而且包含所有的 historical version(图侵删)。

distributed

两种不同的 Version Control 思路

一种是增量模式:

version1

Git 采用的是 Snapshot 模式,用官方 document 的说法,是 a stream of snapshots:

version2

也就是说,当文件被改变的时候,Git 会保留一个完整的新文件和一个完整的旧文件,如果不变,就 link 回原始文件,只保留一个 copy。

这么看起来,似乎 Git 的做法更占用硬盘空间,不过官方 Document 说是为了 Branching 的方法而做的这个设定,后文会有讲解原因,但后文的那个 link 失效了呃,暂时先放着吧。

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.