3
4

1 回答 1

5

但是树的内容并不意味着是一个可读的字符串,如果我按照文章“ Git 树对象,它们是如何存储的? ”:

一般格式为:

  • 声明对象类型的前 4 个字节。在我们的例子中,这四个字节是“树”,ASCII 编码。
  • 然后是一个空间,
  • 然后是条目,一无所有。

确切的格式如下。所有大写字母都是“非终结符”,我稍后会解释。

tree ZN(A FNS)*

在哪里:

  • N是 NUL 字符
  • Z是对象的大小(以字节为单位)
  • A是 unix 访问代码,ASCII 编码,例如> 100644 用于普通文件。
  • F是文件名,(我不确定编码。它绝对兼容 ASCII),以 NUL 结尾。
S is the 20 byte SHA hash of the entry pointed to, 20 bytes long.

这是一个例子。
假设我们有一个包含两个文件的目录,分别称为testtest2。目录的 SHA 是f0e12ff4a9a6ba281d57c7467df585b1249f0fa5. 您可以在输出中看到条目的 SHA 哈希

$ git cat-file -p f0e12ff4a9a6ba281d57c7467df585b1249f0fa5
100644 blob 9033296159b99df844df0d5740fc8ea1d2572a84    test
100644 blob a7f8d9e5dcf3a68fdd2bfb727cde12029875260b    test2

树

于 2013-07-28T16:03:29.017 回答