git基础教程(44) 了解git内部原理(中)
Posted 奇妙之二进制
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git基础教程(44) 了解git内部原理(中)相关的知识,希望对你有一定的参考价值。
SHA
代表项目历史所需的所有信息都存储在由 40 位“对象名称”命名的文件中,这个名称形如:
6ff87c4664981e4397625791c8ea3bbb5f2279a3
你会在 Git 中到处看到这些 40 个字符的字符串。在每种情况下,名称都是通过获取对象内容的 SHA1 哈希值来计算的。SHA1 散列是一种加密散列函数。这对我们来说意味着几乎不可能找到两个同名的不同对象。这有很多优点:
- Git 可以通过比较名称来快速判断两个对象是否相同。
- 由于每个存储库中对象名称的计算方式相同,因此存储在两个存储库中的相同内容将始终以相同的名称存储。
- Git 可以在读取对象时检测错误,方法是检查对象的名称是否仍然是其内容的 SHA1 哈希。
对象
每个对象都包含三样东西——类型、大小和内容。size简单来说就是内容的大小,内容取决于它是什么类型的对象,并且有四种不同类型的对象:“blob”、“tree”、“commit”和“tag”。
- “ **blob”**用于存储文件数据——它通常是一个文件。
- “**树”**基本上就像一个目录——它引用了一堆其他的树和/或 blob(即文件和子目录)
- “**提交”**指向一棵树,将其标记为项目在某个时间点的样子。它包含有关该时间点的元信息,例如时间戳、自上次提交以来更改的作者、指向先前提交的指针等。
- “**标签”**是一种以某种方式将特定提交标记为特殊的方式。它通常用于将某些提交标记为特定版本或类似的东西。
几乎所有的 Git 都是围绕操纵这种由四种不同对象类型组成的简单结构
以上是关于git基础教程(44) 了解git内部原理(中)的主要内容,如果未能解决你的问题,请参考以下文章