Wie stellt git sicher, dass Commit-SHA-Schlüssel für identische Vorgänge / Daten immer noch eindeutig sind?

Wenn ich eine Datei erstellefoo mittouch foo und dann rennenshasum foo es wird ausgedruckt

da39a3ee5e6b4b0d3255bfef95601890afd80709.

Egal wie oft ich renneshasum foo oder wenn ich es auf einem anderen Computer laufen lasse, druckt es immerda39a3ee5e6b4b0d3255bfef95601890afd80709 weil ja, es ist die SHA1-Darstellung von genau den gleichen Inhalten. Leere Inhalte in diesem Fall :)

Wenn ich jedoch die folgenden Schritte durchführe:

cd /some/where
mkdir demo
git init
touch foo
git add -A
git commit -m "adding foo"

..und erinnere mich an den SHA-Schlüssel desverpflichten (z.B.959c363ed4cf147725360532454bc258c964c744).

Nun, wenn ich löschedemo und wiederholen Sie genau die gleichen Schritte, immer noch dieverpflichten SHA-Schlüssel wird anders sein. Und das ist großartig und es ist wichtig zu versichernIdentität.

Was ich jedoch gerne wissen würde, ist, was genau git tut, um sicherzustellen, dass Commit-Hashes immer eindeutig sind, selbst wenn sie exakt die gleichen Operationen mit genau den gleichen Inhalten ausführen. Verwendet Git einfach so etwas?uuidgen um eine eindeutige ID für das Festschreibungsobjekt zu generieren, oder führt sie eine andere Aktion aus, die auf einer Kombination aus einem Zeitstempel, Ihrer Mac-Adresse, Ihren WLAN-Signalen usw. basiert.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage