提交对象(commit object)始终只有一个树对象(tree object)吗?
我想不出有例外的情况,但也没有发现明确说明的文档。
提交对象(commit object)始终只有一个树对象(tree object)吗?
我想不出有例外的情况,但也没有发现明确说明的文档。
提交对象是否总是恰好有一个[顶级]树对象?
是的。
我想不出任何情况,它不是这种情况,但我也看不到任何明确说明的文件。
这是设计的一部分:没有它,git rev-parse commit^{tree}
将没有明确的结果。
人们可以设想与Git相关的系统,其中提交可以存储多个树对象1,但需要解决许多设计问题。
1我在几个上下文中都考虑过这个问题,包括“子模块是错误的,子树更好但需要更好的支持”的问题。 我还没有解决所有问题。
请注意,提交对象还需要恰好有一个作者
和一个提交者
行; 如果这些格式不正确,git fsck
将会报错。