Wie kann ich einen Commit in Sourcetree rückgängig machen?
- Einführung in das Rückgängigmachen von Commits in Sourcetree
- Commit rückgängig machen – was wird benötigt?
- Den letzten Commit in Sourcetree zurücksetzen
- Rückgängigmachen eines Commit, der bereits gepusht wurde
- Zusammenfassung
Einführung in das Rückgängigmachen von Commits in Sourcetree
Sourcetree ist ein beliebtes grafisches Benutzerinterface für Git, das viele Nutzern hilft, ihre Versionsverwaltung einfacher zu handhaben. Gelegentlich kommt es vor, dass man einen Commit rückgängig machen möchte – sei es aufgrund eines Fehlers im Code, eines versehentlich erstellten Commits oder weil Änderungen anders umgesetzt werden sollen. In diesem Zusammenhang stellt sich die Frage, wie man in Sourcetree einen Commit rückgängig machen kann.
Commit rückgängig machen – was wird benötigt?
Zunächst muss klar sein, was genau mit Commit rückgängig machen gemeint ist. Handelt es sich darum, den letzten Commit komplett zu löschen, oder sollen die Veränderungen des Commits behalten und lediglich der Commit selbst entfernt werden? Außerdem kann man zwischen einem einfachen Zurücksetzen des lokalen Repositories und komplizierteren Szenarien unterscheiden, wenn der Commit bereits an ein Remote-Repository wie GitHub gepusht wurde.
Den letzten Commit in Sourcetree zurücksetzen
Um den letzten Commit rückgängig zu machen, öffnet man zunächst Sourcetree und geht in die Übersicht des Repositorys. Dort sieht man eine Liste der bisherigen Commits. Durch einen Rechtsklick auf den Commit, der zurückgenommen werden soll, wird das Kontextmenü geöffnet. Dort existiert die Option Reset current branch to this commit. Sobald diese gewählt wird, bietet Sourcetree verschiedene Reset-Modi an:
Beim Mixed-Reset wird der Commit entfernt, die Änderungen bleiben aber als unstaged im Arbeitsverzeichnis erhalten. Dies ist nützlich, wenn man den Code ändern oder neu committen möchte.
Der Hard-Reset entfernt sowohl den Commit als auch die Dateien aus dem Arbeitsverzeichnis. Diese Variante sollte vorsichtig verwendet werden, da alle lokalen Änderungen unwiderruflich gelöscht werden.
Ein Soft-Reset hebt nur den Commit auf, lässt aber die Änderungen in der Staging-Area (Index). So kann man Änderungen direkt erneut committen.
Rückgängigmachen eines Commit, der bereits gepusht wurde
Wenn der Commit bereits an ein Remote-Repository übermittelt wurde, ist das Rückgängigmachen komplexer. Ein Reset und ein anschließendes Pushen mit der Option --force (Erzwingen) überschreiben die Historie auf dem entfernten Server. Dies kann zu Problemen bei anderen Teammitgliedern führen, die auf diesen Branch zugreifen.
Alternativ kann man einen Revert-Commit anlegen. Dieser erzeugt einen neuen Commit, der die Änderungen des unerwünschten Commits umkehrt. In Sourcetree kann man diesen Vorgang ebenfalls durchführen, indem man den entsprechenden Commit auswählt und Reverse Commit oder Revert Commit im Kontextmenü auswählt. Damit bleibt die Historie erhalten und der unerwünschte Commit wird effektiv neutralisiert, ohne die Git-Historie neu zu schreiben.
Zusammenfassung
Insgesamt bietet Sourcetree einfache Möglichkeiten, Commits rückgängig zu machen. Mit der Reset-Funktion lassen sich lokale Commits unkompliziert entfernen oder angepasst behandeln. Für bereits gepushte Commits ist der Revert-Commit meist der sicherste Weg. Wichtig ist immer, die Auswirkungen auf die Zusammenarbeit im Team zu bedenken und passende Methoden entsprechend der Situation anzuwenden.
