Link Search Menu Expand Document

Übung - Reverting

Git ermöglicht es Änderungen, die in einem früheren Commits gemacht wurden, durch ein neues Commit wieder rückgängig zu machen.

Infos

  • git revert <commit> erstellt ein neues Commit, welches die Änderungen eines früheren Commmits wieder rückgängig macht.

  • Bei einem Merge-Commit muss man zusätzlich Angeben auf welchen Merge-Parent sich die Ermittlung der Änderungen beziehen soll:
    git revert -m 1 <merge-commit>

  • Bei weiter zurückliegenden Commits kann es zu Konflikten kommen (weil betroffene Dateien in späteren Commits weiter bearbeitet wurden). Diese müssen dann wie bei Merge-Konflikten aufgelöst werden.

Zum Beispielsetup

Im Beispielrepository wurde eine Datei umbennant, das entsprechende Commit ist mit umbenennung getagged.

Außerdem wurde ein Feature-Branch per Merge integriert. Das Merge-Commit ist mit feature-merge getagged.

Beide Änderungen sollen zurückgenommen werden.

$ cd repo


Schritt 1 - Einzelnes Commit rückgängig machen.

Starte im Verzeichnis git-uebungen/aufgaben/zusammenarbeit-reverting/repo.

In der Historie wurde die Datei README.md in liesmich umbenannt. Mache diese Änderung rückgängig. Tipp: Das Commit ist als umbenennung getagged.

Schritt 2 - Merge-Commit rückgängig machen.

Starte im Verzeichnis git-uebungen/aufgaben/zusammenarbeit-reverting/repo.

In der Historie wurde ein Feature-Branch per Merge integriert.file . Mache dies änderung rückgängig. Tipp: Das Merge-Commit ist als feature-merge getagged. Tipp: Am verschinden der Datei from-feature kann man den Erfolg erkennen.

Schritt 3 - Feature-Branch kaputt!?

Starte im Verzeichnis git-uebungen/aufgaben/zusammenarbeit-reverting/repo.

Ein Revert wird oft genutzt, um ein Feature kurzfristig zurückzunehmen, z. B. wegen eine Produktionsproblems. Später möchte man den Feature-Branch korrigieren und dann erneut integrieren. Das geht nicht so ohne weiteres.

Im Beispiel hat der Branch feature eine Weiterentwicklung erfahren. Versuche ihn erneut zu Mergen. Untersuche die Fehlermeldung und den Commit-Graphen. Tipp: Das gescheiterte Merge kann mit git merge --abort abgebrochen werden.

Schritt 4 - Merge-Revert wieder rückgängig machen.

Starte im Verzeichnis git-uebungen/aufgaben/zusammenarbeit-reverting/repo.

Der Trick ist, das Revert-Commit selbst zu reverten, dann sind jene Änderungen wieder da, auf denen die Weiterentwicklung des Features basiert.

Tipp: Das Commit ist als feature-merge getagged.

repo $ cd ..


Zur Lösung

Zum Überblick