问问题
895 次
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.
这是一个例子。
假设我们有一个包含两个文件的目录,分别称为test
和test2
。目录的 SHA 是f0e12ff4a9a6ba281d57c7467df585b1249f0fa5
. 您可以在输出中看到条目的 SHA 哈希
$ git cat-file -p f0e12ff4a9a6ba281d57c7467df585b1249f0fa5
100644 blob 9033296159b99df844df0d5740fc8ea1d2572a84 test
100644 blob a7f8d9e5dcf3a68fdd2bfb727cde12029875260b test2
于 2013-07-28T16:03:29.017 回答