Git教程之Git原理,超详细版(五)

5.1 Hash算法(简单了解)

Git教程之Git原理,超详细版(五)
哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:

  1. 不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
  2. 哈希算法确定,输入数据确定,输出数据能够保证不变。
  3. 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大。
  4. 哈希算法不可逆 Git 底层采用的是 SHA-1 算法。

哈希算法可以被用来验证文件。原理如下图所示:

Git教程之Git原理,超详细版(五)
Git 就是靠这种机制来从根本上保证数据完整性的。

5.2 Git 保存版本的机制

5.2.1 集中式版本控制工具的文件管理机制

以文件变更列表的方式存储信息。这类系统将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。
Git教程之Git原理,超详细版(五)
这个符号就是我们常用的差量符号Δ,通俗的解释就是,像SVN这种集中式版本控制工具呢,每次就只会保存和上个版本有变化的这一点儿,也就是只存改变之处。当我们要获取一个版本的时候,需要把这几次版本的更新和初始版本都拿出来**“拼凑”**出这个版本。

比如:我们想获取File CVersion 3,我们就需要把最初的File CΔ1Δ2都拿出来拼成Version 3

5.2.2 Git 的文件管理机制

Git 把数据看作是小型文件系统的一组快照。每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改, Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的 工作方式可以称之为***快照流***。
Git教程之Git原理,超详细版(五)
如图中被框起的A1、A2、B和C2都没有重新存储,而是保留了一个链接指向前面已存储的文件。