簡體   English   中英

如何獲取當前/又名下一次提交的git哈希(不是頭部)

[英]how to get git hash of current / aka next commit (not head)

我想將當前的git哈希保存到我的repo文件中,如下所示:

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

問題是,HEAD不是要提交的修訂版的哈希值,而是工作修訂版的哈希值(以前是一個修訂版)。 所以,如果我喜歡上面的內容,我總是擁有prev commit的哈希,而不是最新的哈希。

我可以在提交修改提交的哈希數之前獲得嗎?

提交哈希是提交對象的哈希,它包含各種字段,如提交作者,提交者,日期,父提交哈希和樹哈希。 樹形散列是該樹中所有內容的散列,即跨所有文件的所有散列及其元數據(如模式和名稱)。

因此,修改文件(在給定示例中為VERSION )將修改樹形哈希,因為樹形哈希是提交對象的哈希內容的一部分,也是提交哈希。

預先計算哈希值,以便在將哈希值記錄到文件后生成匹配的提交哈希值,並且理論上可以更改樹/提交哈希值,但實際上這是不可行的。 它基本上意味着為每次提交產生哈希沖突。

話雖這么說,如果它足以只記錄一個短哈希,即一個合理的唯一前綴,如7個字符哈希,許多git命令和用戶界面將顯示,這可以使其工作。 git-vanity這樣的項目會強制對提交對象進行一些小修改,以產生一定長度的所需前綴。

簡而言之,不可能獲得“下一個”提交哈希,因為沒有“下一個”提交哈希,它是基於該提交包含和引用的所有信息生成的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM