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

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

假设提交不会触发任何挂钩程序,这些程序会将更多的文件添加到暂存区或从中删除一些文件,那么我应该在哪个命令中使用以使TREE_HASH_PREDICTION与TREE_HASH匹配?
注意:我不是在问提交哈希值,而是关于提交中包含的树哈希值。

@JoachimSauer 我在询问提交中包含的树哈希,而不是提交哈希。树哈希仅取决于树中的文件。 - matthias_buehlmann
哦,我没有意识到,那么实际上这是一个不同的问题,我的评论不适用。 - Joachim Sauer
1
@M.A 不是这个提交哈希值。我在问的是树哈希值(这是您使用 git cat-file -p $commithash 调查提交时看到的哈希值,然后您会在标题的第一行看到哈希值)。 - matthias_buehlmann
1个回答

5

git write-tree 确保了有一个带有当前索引(即已暂存更改)上下文的树对象,并写出该对象的ID。在此之后没有任何修改情况下(即提交挂钩),此树对象将用于提交。

请注意,这实际上会创建保存该树内容的文件,这会花费时间和IO操作。但是,在提交时应该节省这些用时,因为不需要重新创建它,而如果您最终提交更改,则GC可能会最终删除该树对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接