Kursinhalt
Git-Grundlagen
Git-Grundlagen
Einen Bestimmten Commit Rückgängig Machen
git revert
Wie bereits erwähnt, wird der Befehl git revert
verwendet, um einen bestimmten Commit rückgängig zu machen. Dieser Befehl erstellt einen neuen Commit, der die durch den angegebenen Commit eingeführten Änderungen rückgängig macht. Die grundlegende Syntax ist wie folgt:
Wie Sie sehen können, sollten wir anstelle von HEAD, wie wir es beim Rückgängigmachen des letzten Commits getan haben, nun den Hash eines bestimmten Commits (Commit-ID) angeben, den wir rückgängig machen möchten (ersetzen Sie <commit-hash>
durch einen gültigen Hash).
Mehr über Hashes
Denken Sie daran, dass jeder Commit seine eigene eindeutige ID hat, die im Wesentlichen eine Zeichenfolge aus Ziffern (0-9) und Buchstaben (a-f) ist, eine hexadezimale Zeichenfolge. Diese 40-stellige Zeichenfolge wird als Hash bezeichnet. Werfen wir einen Blick auf unseren neuesten Commit:
Hier ist sein Hash:
1b00736255dca7d78659a9971d0c30fba0eb3075
Hinweis
Sie werden einen anderen Hash für diesen Commit haben, aus dem unten erklärten Grund.
Der Commit-Hash wird mit dem SHA-1-Algorithmus basierend auf den folgenden Informationen berechnet:
- Commit-Nachricht;
- Datum;
- Autor;
- Snapshot des Arbeitsbaums;
- Hash des übergeordneten Commits (oder Commits, wenn es mehr als einen übergeordneten Commit gibt).
Wenn der Commit der erste im Repository ist, wird der Hash des übergeordneten Commits offenbar nicht berechnet.
Da all diese Commit-Informationen zur Berechnung seines Hashes verwendet werden, stellt die Verwendung von Hashes als Commit-IDs die Konsistenz des Repositories sicher. Außerdem ist die Wahrscheinlichkeit, dass zwei verschiedene Commits denselben Hash haben (die Wahrscheinlichkeit einer Kollision), extrem gering, sodass es sehr unwahrscheinlich ist, dass dies zufällig passiert.
Grundsätzlich, wenn sich irgendetwas im Commit ändert, ändert sich auch sein Hash. Das bedeutet, dass Git im Falle einer Beschädigung der Daten aus welchem Grund auch immer den Hash verwenden kann, um dies zu identifizieren.
Hinweis
Beim Ändern eines Commits ändert sich die Commit-ID, weshalb es besser ist, den Befehl
git commit --amend
nicht zu verwenden, wenn man mit Remote-Repositories arbeitet.
Beispiel-Workflow
Bevor wir entscheiden, welchen Commit wir rückgängig machen möchten, werfen wir einen Blick auf die vier letzten Commits:
Wir können sehen, dass es einen Commit gibt, bei dem wir die Datei recipe.txt
hinzugefügt haben. Lassen Sie uns diesen Commit rückgängig machen, indem wir einen neuen Commit erstellen, der diese Änderungen rückgängig macht und die Datei im Wesentlichen löscht. In meinem Fall ist der Hash folgender:
043b634d76a7a7744757350512b6367417c29e0
Ihr Hash für diesen Commit wird jedoch anders sein. Wir können diesen Commit jetzt rückgängig machen:
Ersetzen Sie diesen Hash durch Ihren Hash.
Noch einmal, der Standard-Texteditor wird mit der Standard-Commit-Nachricht zum Zurücksetzen geöffnet. Wir lassen es so, wie es ist.
Als nächstes schließen wir den Texteditor ordnungsgemäß und zeigen die Änderungen, die in diesem letzten Commit vorgenommen wurden:
7 Löschungen fanden statt, was bedeutet, dass alle 7 Zeilen der Datei gelöscht wurden. Lassen Sie uns nun überprüfen, ob die Datei selbst gelöscht wurde, indem wir alle nicht versteckten Dateien und Verzeichnisse in unserem Projektverzeichnis auflisten:
Herzlichen Glückwunsch! Wir haben die Datei recipe.txt
erfolgreich gelöscht.
Danke für Ihr Feedback!