$ git add somefile.txt
$ TREE_HASH_PREDICTION=$(???)
$ git commit -m "some message"
$ TREE_HASH=$(git rev-parse HEAD^{tree})
假设提交不会触发任何挂钩程序,这些程序会将更多的文件添加到暂存区或从中删除一些文件,那么我应该在哪个命令中使用以使TREE_HASH_PREDICTION与TREE_HASH匹配?
注意:我不是在问提交哈希值,而是关于提交中包含的树哈希值。
$ git add somefile.txt
$ TREE_HASH_PREDICTION=$(???)
$ git commit -m "some message"
$ TREE_HASH=$(git rev-parse HEAD^{tree})
git write-tree
确保了有一个带有当前索引(即已暂存更改)上下文的树对象,并写出该对象的ID。在此之后没有任何修改情况下(即提交挂钩),此树对象将用于提交。
请注意,这实际上会创建保存该树内容的文件,这会花费时间和IO操作。但是,在提交时应该节省这些用时,因为不需要重新创建它,而如果您最终不提交更改,则GC可能会最终删除该树对象。
git cat-file -p $commithash
调查提交时看到的哈希值,然后您会在标题的第一行看到哈希值)。 - matthias_buehlmann