Git是如何存储树对象的?

6

我正在尝试理解git存储树对象的精确格式。如何计算树对象的哈希值?


1
关于哈希,https://dev59.com/FG435IYBdhLWcg3wqB4x 和 https://dev59.com/oXRB5IYBdhLWcg3wr44U 可以提供帮助。 - VonC
可能是What is the internal format of a git tree object?的重复问题。 - Ciro Santilli OurBigBook.com
2个回答

10

6
一棵树对象在内部被存储为一个二进制对象(类型为“tree”,以区别于实际文件),其中包含一个条目列表。一个条目可以描述一个文件或另一个树(目录)。每行都包含条目名称、其SHA1哈希和其模式。更详细的描述可在此处找到。git ls-treegit cat-file -p这样的命令将输出该对象的文本表示形式。这个文本形式是一个相当简单的转换:SHA-1以十六进制形式显示在条目名称之前,另外一列描述它指向的对象类型(“blob”、“tree”)只是为了清晰明了。
它的哈希值简单地计算为该内容的哈希值。由于它包含其组成部分的名称和哈希值,因此树的哈希值保证在任何子树的哈希值更改时都会更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接