Git – Git Revert – Commits und Merges rückgängig machen
In Git wird der Begriff "Revert" verwendet, um einige Änderungen wieder rückgängig zu machen. Dafür benutzen wir den Befehl git revert. Allerdings werden bei diesem Vorgang keine Daten gelöscht, sondern erzeugt eine neue Änderung des vorherigen Zustands und macht damit den angegebenen Commit rückgängig. Im Großen und Ganzen ist "git revert" ein Commit.
Der Befehl kann nützlich sein, um Bugs im Projekt zu verfolgen. Wenn du etwas aus der History entfernen möchtest, dann ist der Befehl jedoch die falsche Wahl.
Um die Änderungen rückgängig zu machen, führe den unten stehenden Befehl aus:
Syntax:
git revert
Die Optionen zum "git revert" Befehl:
Der Befehl erlaubt einige zusätzliche Operationen zum Editieren, nicht Editieren (no edit), Cleanup und mehr. Lass uns diese Optionen kurz anschauen:
commit: Die Commit-Option wird verwendet, um einen Commit rückgängig zu machen. Um einen Commit rückgängig zu machen, brauchen wir die Commit-ID. Der git log Befehl kann auf diese ID's zugreifen.
git revert <commit>
--edit / -e: Die Option -edit (oder -e) wird benutzt, um die Commit-Nachricht zu editieren, bevor der Commit rückgängig gemacht wird. Es ist eine Standardoption im Befehl git revert.
git revert -e <commit>
-n/--no edit: Diese Option wird keinen Texteditor öffnen, um die Commit-Nachticht zu editieren. Die Option wird den letzten Commit sofort rückgängig machen.
git revert -n <commit>
--cleanup=<mode>: Die Cleanup-Option bestimmt, wie Leerzeichen und Kommentare aus der Nachricht entfernt werden.
Es gibt noch weitere Optionen, die wir hier überspringen, um dich nicht mit Informationen zu überladen. Sollte der Fall eintreffen, dass du einen Revert machen musst, schaue dir zuvor die offizielle Git-Dokumentation an.
Lasst uns jetzt verstehen, wie man vorherige Commits rückgängig macht.
Git Revert auf einen vorherigen Commit
Angenommen, du hast eine Änderung an einer Datei vorgenommen, sagen wir an unserer hallowelt.txt Datei.
Und später erinnerst du daran, dass du einen falschen Commit in der falschen Datei oder im falschen Branch gemacht hast. Jetzt willst du die Änderungen rückgängig machen. Git erlaubt dir zum Glück, deine Fehler zu korrigieren.
Schaue dir folgendes Beispiel aus der Git Bash an:

Wie du an der obigen Ausgabe sehen kannst, habe ich Änderungen an hallowelt.txt vorgenommen und diese dann comitted. Wir können diese Änderung mit dem Befehl git revert rückgängig machen. Um diesen Vorgang durchzuführen brauchen wir die Commit-ID. Rufe git log auf, um die Commit ID zu finden:
git log
Output:
In der obigen Ausgabe habe ich die ID des letzten Commits kopiert. Jetzt werde ich den Revert-Befehl für diese Commit-ID ausführen.
Das Ganze funktioniert so:
git revert d9d71cb9ee5c2ec0002e6f6e065fc8cbd027c3b7
Der obige Befehl wird meinen letzten Commit rückgängig machen. Siehe Output:
[master a3af9a2] Revert "Neuer Text für zu Hallowelt.txt eingefügt"
1 file changed, 1 insertion(+), 2 deletions(-)
Wie du an der obigen Ausgabe sehen kannst, wurden die im Repository vorgenommenen Änderungen rückgängig gemacht.
Git Merge rückgängig machen (Revert Merge)
In Git ist das Zusammenführen auch ein Commit, der mindestens zwei Elternteile hat. Er verbindet Branches und Code, um ein komplettes Projekt zu erstellen.
Ein Merge in Git ist ein Commit, der mindestens zwei Elternteile hat. Er bringt mehrere Entwicklungslinien zusammen. In einem Arbeitsablauf, bei dem Features in Branches entwickelt und dann zu einer Hauptlinie zusammengeführt werden, haben die Merge-Commits normalerweise zwei Elternteile.
Wie du einen Merge rückgängig machst
Normalerweise wird das Rückgängigmachen eines Merges als komplizierter Prozess angesehen. Wenn wir den Merge nicht richtig rückgängig machen, kann das zu zusätzlichen Problemen führen.
Schauen wir uns an, wie wir einen Merge mit Hilfe des git revert Befehls korrekterweise rückgängig machen. Alternativ eignet sich hier in vielen Fällen der git reset Befehl. Nachfolgend zeige ich dir jedoch ein Beispiel zu git revert.
Ich habe ein paar Änderungen an meiner Datei landing-page.txt auf dem "feature1"-Branch gemacht und sie mit dem "feature3"-Branch gemerged.
Hier ist der Output:
Updating ecc8ac1..0f49f5b
Fast-forward
landing-page.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Und natürlich auch als Git Bash Screenshot:
Um einen Merge rückgängig zu machen, müssen wir seine Referenznummer erhalten. Um die Commit-Historie zu überprüfen, führe den unten stehenden Befehl aus:
git log
Der git log Befehl zeigt die Commit-History an. Hier der abgekürzte Output:
commit 0f49f5b88c1f1fa2aaecc006adc3ffe01852b80b (HEAD -> feature3, feature1)
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 16:39:27 2020 +0200
Landing Page Update Feature1 Branch
commit ecc8ac1d38c3f47164b77c0c1ad0e5ed126a6fe7
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 16:36:15 2020 +0200
Landing Page neu
Kopiere die ID des Merging-Commit, den du rückgängig machen möchtest. Führe dann den folgenden Befehl aus:
git revert <Commit-ID> -m 1
Der obige Befehl wird den Merge rückgängig machen. Hier wird -m 1 für den ersten Elternteil als Mainline verwendet.
Output:
[feature3 c48ed7c] Revert "Landing Page Update Feature1 Branch"
1 file changed, 1 insertion(+), 2 deletions(-)
Hier der Screenshot aus Git Bash:

Aus der obigen Ausgabe können wir sehen, dass der vorherige Merge rückgängig gemacht wurde.
Zusammenfassung
Sollte etwas schief gehen bei einem Commit oder bei einem Merge, hast du jetzt das passende Werkzeug, um deine Änderungen in wenigen Schritten rückgängig zu machen.
In der nächsten Lektion lernst du ein weiteres Werkzeug kennen, um Änderungen rückgängig zu machen.



