我想将当前的git哈希保存到我的repo文件中,如下所示:
echo `git rev-parse HEAD` > VERSION
git add VERSION
git commit -m 'updated version'
git push
问题是,HEAD不是要提交的修订版的哈希值,而是工作修订版的哈希值(以前是一个修订版)。所以,如果我喜欢上面的内容,我总是拥有prev commit的哈希,而不是最新的。
我可以在提交修改提交的哈希数之前得到吗?
答案 0 :(得分:3)
提交哈希是提交对象的哈希,它包含各种字段,如提交作者,提交者,日期,父提交哈希和树哈希。树形哈希是该树中所有内容的哈希值,即所有文件的所有哈希值及其元数据,如模式和名称。
修改文件(在给定示例中为VERSION
),因此将修改树形哈希,因为树形哈希是提交对象的哈希内容的一部分,也是提交哈希。
预先计算哈希值,以便在将哈希值记录到文件后生成匹配的提交哈希,并且理论上可以更改树/提交哈希值,但实际上不可行。它基本上意味着为每次提交产生哈希冲突。
话虽如此,如果足以仅记录短哈希,即一个合理的唯一前缀,如7个字符哈希,许多git命令和用户界面将显示,这可以使其起作用。像git-vanity这样的项目会强制对提交对象进行一些小修改,以产生一定长度的所需前缀。
简而言之,不可能获得" next"提交哈希,因为没有" next" commit hash,它是根据该提交包含和引用的所有信息生成的。