一、哈希
哈希是一个系列的加密算法, 各个不同的哈希算法虽然加密强度不同, 但是有以下几个共同点:
- 不管输入数据的数据量有多大, 输入同一个哈希算法, 得到的加密结果长度固定。
- 哈希算法确定, 输入数据确定, 输出数据能够保证不变
- 哈希算法确定, 输入数据有变化, 输出数据一定有变化, 而且通常变化很大
- 哈希算法不可逆
Git 底层采用的是 SHA-1 算法。
哈希算法可以被用来验证文件。 原理如下图所示:
Git 就是靠这种机制来从根本上保证数据完整性的。
二、Git 保存版本的机制
1、集中式版本控制工具的文件管理机制
以文件变更列表的方式存储信息。 这类系统将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。
2、Git 的文件管理机制
Git 把数据看作是小型文件系统的一组快照。 每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。 为了高效, 如果文件没有修改,Git 不再重新存储该文件, 而是只保留一个链接指向之前存储的文件。 所以 Git 的工作方式可以称之为快照流。
3、Git 文件管理机制细节
Git 的“提交对象”
提交对象及其父对象形成的链条