【问题标题】:How does Git store tree objects?Git 如何存储树对象?
【发布时间】:2012-08-28 16:24:59
【问题描述】:

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

【问题讨论】:

标签: git


【解决方案1】:

树对象

'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

【讨论】:

  • 这非常非常有用。谢谢!
【解决方案2】:

树对象在内部存储为包含条目列表的二进制对象(“树”类型,这将其与实际文件区分开来)。一个条目可以描述一个文件或另一个树(目录)。每行包含条目名称、它的 SHA1 哈希和它的模式。 A more detailed description can be found here.

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

它的哈希值被简单地计算为该内容的哈希值。由于它包含其组成部分的名称和散列,因此树散列保证在任何子树的散列发生变化时发生变化。

【讨论】:

  • 这也很有帮助。谢谢!
  • @mernen 的编辑是正确的;在它被拒绝之前我没有看到它。亲爱的,请重复修改,我会批准的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 2014-10-21
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多