gpt4 book ai didi

bash - 如何获取当前/又名下一次提交的 git 哈希(不是头)

转载 作者:行者123 更新时间:2023-12-04 16:17:17 25 4
gpt4 key购买 nike

我想像这样将当前的 git 哈希保存到我的 repo 文件中:

echo `git rev-parse HEAD` > VERSION
git add VERSION
git commit -m 'updated version'
git push

问题是,HEAD 不是要提交的修订版的哈希值,而是工作修订版(前一个修订版)的哈希值。所以如果我像上面那样做,我总是有上一次提交的哈希值而不是最新的。

我可以在提交之前获取提交将具有的散列号的修订版吗?

最佳答案

提交哈希是提交对象的哈希,其中包含各种字段,如提交作者、提交者、日期、父提交哈希和树哈希。树哈希是该树中所有内容的哈希,即跨越所有文件及其元数据(如模式和名称)的所有哈希。

修改文件(给定示例中的 VERSION)因此将修改树哈希,并且因为树哈希是提交对象的哈希内容的一部分,所以也是提交哈希。

预先计算哈希值,以便在将哈希值记录到文件并更改树/提交哈希值后生成匹配的提交哈希值在理论上是可行的,但实际上不可行。这基本上意味着为每次提交产生哈希冲突。

话虽这么说,如果只记录一个短散列就足够了,即像许多 git 命令和用户界面都会显示的 7 个字符散列这样的相当独特的前缀,这就可以工作了。有类似 git-vanity 的项目这将强制对提交对象进行小的修改以产生特定长度的所需前缀。

简而言之,不可能获得“下一个”提交哈希,因为没有“下一个”提交哈希,它是根据该提交包含和引用的所有信息生成的。

关于bash - 如何获取当前/又名下一次提交的 git 哈希(不是头),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48239631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com