繁体   English   中英

Git如何存储树对象?

[英]How does Git store tree objects?

我试图理解git如何存储树对象的确切格式。 如何计算树对象的哈希值?

树对象

'tree' ' ' size_decimal '\0' tree_content

对于tree_content中的每个条目

mode ' ' filename '\0' hash_20_bin

mode:100644为常规文件,100755可执行文件; 040000:树; 120000:符号链接; 160000:gitlink

http://linquize.blogspot.hk/2011/10/supplemental-information-for-git.html

树对象在内部存储为包含条目列表的二进制对象(类型为“树”,区别于实际文件)。 条目可以描述文件或另一个树(目录)。 每行包含条目名称,SHA1哈希值及其模式。 可以在此处找到更详细的描述。

git ls-treegit cat-file -p将输出该对象的文本表示。 这个文本形式是一个非常简单的转换:SHA-1以十六进制形式显示在条目名称之前,另外一列描述了它指向的对象类型(“blob”,“tree”),只是为了清楚起见。

其哈希值仅计算为该内容的哈希值。 由于它包含其成分的名称和散列,因此只要任何子树的散列发生更改,树形散列就会保证更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM