如果SHA是由提交中的數據生成的,那麼Git會知道兩次提交是否相同。爲什麼Git會生成一個隨機SHA?
這將解決重新綁定和生成實際上相同的提交時出現的問題,但Git認爲它們因爲具有不同的SHA而不同。
這個邏輯是正確的還是我錯過了什麼?
如果SHA是由提交中的數據生成的,那麼Git會知道兩次提交是否相同。爲什麼Git會生成一個隨機SHA?
這將解決重新綁定和生成實際上相同的提交時出現的問題,但Git認爲它們因爲具有不同的SHA而不同。
這個邏輯是正確的還是我錯過了什麼?
提交的SHA包含父級SHA提交。這就是爲什麼它會在重新綁定時發生變化,即使提交本身沒有改變 - 這是父級更改(因爲這是重新綁定的整個點)。
如果它們確實是相同的提交,它們將具有相同的隨機SHA。
假設您聲明使用了隨機SHA是正確的......如果提交在差異方面是相同的,它們仍然因時間不同而不同,由誰製作它們以及應用差異的先前提交。等等。
當重新定義時間時,作者和提交者不會改變。只有父提交更改。 –
所以SHA不是隨機的。 –
SHA根據定義不是隨機的。這是其投入的確定性功能。如果不同,那意味着投入也不同。 –
提交中的數據用於生成樹的SHA。如果你在提交的sha上使用'git cat-file -p sha',你會看到樹的sha,它完全由內容決定。 –