2012-10-05 51 views
1

如果SHA是由提交中的數據生成的,那麼Git會知道兩次提交是否相同。爲什麼Git會生成一個隨機SHA?

這將解決重新綁定和生成實際上相同的提交時出現的問題,但Git認爲它們因爲具有不同的SHA而不同。

這個邏輯是正確的還是我錯過了什麼?

+6

SHA根據定義不是隨機的。這是其投入的確定性功能。如果不同,那意味着投入也不同。 –

+2

提交中的數據用於生成樹的SHA。如果你在提交的sha上使用'git cat-file -p sha',你會看到樹的sha,它完全由內容決定。 –

回答

13

提交的SHA包含父級SHA提交。這就是爲什麼它會在重新綁定時發生變化,即使提交本身沒有改變 - 這是父級更改(因爲這是重新綁定的整個點)。

5

如果它們確實是相同的提交,它們將具有相同的隨機SHA。

假設您聲明使用了隨機SHA是正確的......如果提交在差異方面是相同的,它們仍然因時間不同而不同,由誰製作它們以及應用差異的先前提交。等等。

+1

當重新定義時間時,作者和提交者不會改變。只有父提交更改。 –

+1

所以SHA不是隨機的。 –

相關問題