git:如何在提交之前获取下一次提交的树哈希?

use*_*931 3 git

$ git add somefile.txt
$ TREE_HASH_PREDICTION=$(???)
$ git commit -m "some message"
$ TREE_HASH=$(git rev-parse HEAD^{tree})
Run Code Online (Sandbox Code Playgroud)

假设提交不会触发任何添加更多文件或从暂存区删除一些文件的钩子,我可以使用什么命令???以便 TREE_HASH_PREDICTION 匹配 TREE_HASH?

注意:我不是在询问提交哈希,而是询问提交中包含的树哈希

Joa*_*uer 5

git write-tree确保存在具有当前索引上下文(即暂存更改)的树对象并写出该对象的 id。在此之后没有任何修改(即提交钩子),这个树对象将是提交中使用的对象。

请注意,这实际上会在磁盘上创建文件来保存该树的内容,这会消耗时间和 IO。但是所用的时间也应该在提交期间保存,因为它不必重新创建,如果您最终提交更改,GC 可能最终会删除该树对象。