2012-04-20 65 views
1

希望有一種方法可以發現正在生成的提交的sha。我在一個commit-msg鉤子裏面。我想將sha添加到提交消息的末尾,以便我的git gui可以爲我創建一個GitHub鏈接。如何檢索在commit-msg鉤子中生成的git commit的sha?

+1

你是什麼意思「你的狗屎gui」? – 2012-04-20 08:06:57

+0

如果「你的git gui」引用了一個提交,那麼它已經很平常地具有提交的散列,因爲散列*是對提交的引用,所以我不明白你爲什麼要在提交消息。這就像你想過河取水。 – 2012-04-20 11:25:57

+0

我碰巧使用SourceTree – wprater 2012-04-24 06:43:05

回答

7

SHA1哈希生成取決於提交消息,因此將哈希附加到提交消息會導致哈希不同。你有雞或雞蛋的問題。

2

SHA1尚未生成(提交尚未發生,因爲掛鉤可以阻止它)並取決於消息的內容。因此,如果你的鉤子計算「它會是什麼」,然後修改該消息,結果將與計算出的SHA1不同。

因此,儘管可以計算「SHA1將會是什麼」,但是您不能將其轉儲到提交消息中。

下面是如何計算一個實際的SHA1犯,雖然,因爲提到它提交:-)或名稱的SHA1:

$ git cat-file -p HEAD > /tmp/t 
$ git hash-object -t commit /tmp/t 
ea5670c9d18fb1482ea2f3022c96e287afb3e906 
$ git rev-parse HEAD 
ea5670c9d18fb1482ea2f3022c96e287afb3e906 

因此,如果你知道tree,所有parent s,authorcommitter字符串並且具有消息文本,您可以計算出SHA1將是什麼。