2013-01-08 72 views
15

有什麼辦法在提交之前知道提交的哈希值?提交之前知道GIT哈希?

+0

是否有一個原因,你不能只是提交,獲得散列,然後重置 - 軟件? –

+1

我認爲這樣做,但是沒有辦法做到這一點,而不是這個過程? –

+0

總有一種方法,但它有點體操。你爲什麼需要哈希? –

回答

12

你有什麼可能的原因需要嗎?如果您正在考慮將提交的哈希放入自己的提交消息中,我很遺憾地告訴您,但這是不可能的(或者至少在不破壞SHA1的情況下是不可能的)。提交消息是生成哈希時使用的片段之一,因此任何修改該消息的嘗試都會改變哈希。

在任何情況下,找出在提交之前的提交的哈希值是從實際上犯,寫下哈希,然後扔掉的承諾(如卡爾Norum時他的評論中所建議的)幾乎沒有區別。原因是哈希是通過使提交對象並通過SHA1傳遞來生成的。因此,爲了在沒有提交的情況下查找散列,您必須基本上手動完成提交過程並SHA1結果,而不必將對象寫入磁盤。這不僅是不切實際的,而且也是毫無意義的。

+0

我認爲GIT有辦法做到這一點,就像Subversion一樣(例如$ Revision $)。 –

+2

@MarceloLiberato:在Subversion中,預測你正在創建的提交版本號將會變得微不足道。在git中,這是完全不可能的(再次,除非你建議以某種方式破壞SHA1)。 –

+0

「不可能」我不是指「因爲git沒有提供方式」,我的意思是「因爲你不可能實現這個功能,期間」。 –

9

提交哈希取決於提交時間。

如果您在同一秒內做了2次提交相同的更改,相同的父代,同一作者和提交消息,您將獲得相同的散列。否則,哈希應該是不同的。