Wie kann ich Änderungen in GitHub rückgängig machen?
- Uncommittete Änderungen im Arbeitsverzeichnis rückgängig machen
- Gestaging-Bereich (Staging Area) zurücksetzen
- Letzten Commit rückgängig machen
- Rückgängig machen eines Commits, der bereits gepusht wurde
- Fazit
Wenn du mit GitHub arbeitest und Änderungen an deinem Projekt vornimmst, kann es manchmal passieren, dass du einen Fehler machst oder eine durchgeführte Änderung nicht behalten möchtest. Glücklicherweise bietet Git mehrere Möglichkeiten, um Änderungen rückgängig zu machen, je nachdem, welche Art von Änderung du rückgängig machen möchtest und ob du sie bereits committet hast oder noch in deinem Arbeitsverzeichnis liegen.
Uncommittete Änderungen im Arbeitsverzeichnis rückgängig machen
Wenn du Dateien geändert hast, diese Änderungen aber noch nicht committet wurden, kannst du die Änderungen lokal abbrechen und den Zustand der Dateien auf den letzten Commit zurücksetzen. Der Befehl git checkout -- dateiname ermöglicht dir, einzelne Dateien auf den letzten gespeicherten Zustand zurückzusetzen. Alternativ kannst du mit git reset --hard alle ungespeicherten Änderungen komplett verwerfen und deinen Arbeitsbereich vollständig zurücksetzen.
Gestaging-Bereich (Staging Area) zurücksetzen
Manchmal hast du Änderungen bereits zum Staging-Bereich hinzugefügt mit git add, aber möchtest diese wieder entfernen, ohne die eigentlichen Änderungen im Arbeitsordner zu verlieren. In diesem Fall hilft git reset HEAD dateiname, um die Datei aus dem Staging zu entfernen, sodass du Änderungen weiter bearbeiten kannst.
Letzten Commit rückgängig machen
Wenn du bereits einen Commit erstellt hast, dieser aber noch nicht zum Remote-Repository (z. B. GitHub) gepusht wurde, kannst du den Commit entfernen oder anpassen. Mit git reset --soft HEAD~1 wird der letzte Commit entfernt, die Änderungen bleiben jedoch im Staging und können weiter bearbeitet werden. Möchtest du den Commit löschen und die Änderungen aus dem Staging ebenfalls entfernen, kannst du git reset --hard HEAD~1 verwenden. Dabei gehen ungesicherte Änderungen verloren, sei also vorsichtig.
Rückgängig machen eines Commits, der bereits gepusht wurde
Wenn du einen Commit bereits zu GitHub gepusht hast, sind die Möglichkeiten eingeschränkter, da andere eventuell schon auf die Änderungen zugegriffen haben. Eine Möglichkeit ist git revert, der einen neuen Commit erzeugt, der die vorherige Änderung rückgängig macht, ohne die Historie zu verändern. Das ist die empfohlene Methode, da sie den Verlauf sauber hält und keine Konflikte bei anderen Teammitgliedern erzeugt. Wenn du dennoch den Verlauf ändern möchtest, kannst du mit git reset und anschließendem git push --force arbeiten, was jedoch mit Vorsicht anzuwenden ist, da es den öffentlichen Verlauf überschreibt.
Fazit
Das Rückgängigmachen von Änderungen in GitHub hängt immer davon ab, in welchem Zustand sich deine Änderungen befinden: ob sie noch nur lokal sind, ob sie gestaged oder bereits committet wurden und ob die jeweiligen Commits schon zum Remote-Repository hochgeladen wurden. Git bietet entsprechende Befehle wie git checkout, git reset und git revert, die dir helfen, deinen Arbeitsbereich und die Versionshistorie gezielt zu steuern und Fehler zu korrigieren.
