Git:在实际提交之前提前获取提交哈希

时间:2021-03-24 21:25:29

标签: git

我想获得当前 repo 状态的 git 哈希 存在一些更改,但 没有 实际提交任何内容。换句话说,有没有办法提前知道如果更改在某个时间点被提交,哈希会是什么样子?我们可以假设提交消息将是相同的。

1 个答案:

答案 0 :(得分:0)

一般来说,这是不可能的,因为提交对象同时包含作者和提交者标识符和时间戳。因此,对象的哈希值取决于它的创建时间和创建者,因此有许多可能的提交哈希值取决于实际创建提交的时间。

如果提交被签名,签名也会创建一个时间戳,并且签名也有可能包含随机数据,这取决于GnuPG的算法和版本,因此实际值可能最终是不可知的时间。

如果您想知道 根树 哈希,那就更容易了。您可以将所需的更改添加到索引并运行 git write-tree创建一个树对象并将其散列打印到标准输出,但它没有被引用,因此如果您从未真正使用它,它最终将被修剪。您甚至可以将 GIT_INDEX_FILE 设置为临时文件,然后运行 ​​git add 以添加到临时索引,然后运行 ​​git write-tree,这将使用该临时索引文件。

如果你真的想知道而不在存储库中创建任何对象,那么你需要使用 libgit2 之类的东西来做到这一点。