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内部原理(中)的主要内容,如果未能解决你的问题,请参考以下文章

git基础教程 了解git内部原理(上)

想晋级高级工程师只知道表面是不够的!Git内部原理介绍

5分钟学习git内部原理

Git内部原理探索

Git学习——Git基本工作原理(入门级教程,通过玩转Git本地仓库,帮助新手快速入手Git)

git基础教程 Git 是什么