
Bitte erklären Sie mir, ob der SHA, der beim Erstellen des Commit-Objekts erstellt wird, entweder nur der SHA des Dateiinhalts ist oder ob es auch andere Eingaben für die HASH-Funktion gibt, wie etwa den Autor des Commits, den Zeitstempel und das Datum usw.?
Ich habe folgende Verwirrung im Kopf
commit object's index=SHA(Contents of file)?
OR
commit object's index=SHA(Contents of file+author of commit+date of the day+time of the day)?
Antwort1
Ein Commit in git
besteht nie aus reinem Dateiinhalt, daher ist Ihre erste Annahme (SHA(Inhalt der Datei)) nie wahr. Tatsächlich ist jederDateiSie checken ein, wird als Objekt gespeichert undDasDer Name des Objekts ist die SHA-Summe der Datei.
Aber Sie checken nicht nur Dateien ein, es geht um eine DateiHierarchieEine Dateihierarchie wird dargestellt durch einBaumobjekt, die alle Dateien in dieser (Unter-)Hierarchie enthält (gekennzeichnet durch ihren Objektnamen – SHA-Summe), Name und Berechtigungen der Dateien. Der Objektname einer Baumdatei ist die SHA-Summe über diese Auflistung. Dies funktioniert auch rekursiv, d. h. Sie können Baumobjekte von Baumobjekten aus referenzieren (so funktionieren Unterverzeichnisse).
Ihre tatsächlichebegehenbesteht aus den SHA-Summen von (0 oder mehr) Parent-Commits, dem Namen des Tree-Objekts, das dem Stammverzeichnis Ihres Repositorys ähnelt, dem Commit-Datum, dem Commit-Autor, der Commit-Nachricht usw. Der Commit-Name (die „Revisionsnummer“) ist die SHA-Summe überDasAuflistung.