Wie kann man Änderungen in Git rückgängig machen?

Melden
  1. Unstaged Änderungen verwerfen
  2. Gestagte Änderungen rückgängig machen
  3. Commits zurücksetzen
  4. Änderungen in bereits gepushten Commits ändern
  5. Fazit

Beim Arbeiten mit Git kommt es häufig vor, dass man Änderungen an Dateien vornimmt, die man später entweder verwerfen oder zurücksetzen möchte. Je nachdem, in welchem Stadium sich die Änderungen befinden – ob sie bereits gestaged oder nur lokal bearbeitet sind – gibt es unterschiedliche Möglichkeiten, diese rückgängig zu machen. Im Folgenden werden die gängigen Methoden erläutert, wie man Änderungen in Git effektiv und korrekt rückgängig machen kann.

Unstaged Änderungen verwerfen

Wenn Sie eine Datei geändert, aber noch nicht zum Staging-Bereich hinzugefügt haben, können Sie Ihre lokalen Veränderungen mit dem Befehl git checkout oder git restore verwerfen. Dabei wird die Datei wieder in den Zustand zurückgesetzt, der zuletzt im Repository committet wurde. Die lokalen Modifikationen gehen dabei verloren, sofern sie nicht vorher gesichert wurden. Mit dem neuen Befehl git restore ist dies besonders einfach möglich: zum Beispiel git restore dateiname setzt die angegebene Datei zurück.

Gestagte Änderungen rückgängig machen

Hat man Änderungen bereits mit git add zum Staging-Bereich hinzugefügt, möchte man manchmal das Staging rückgängig machen, ohne die tatsächlichen Änderungen im Arbeitsverzeichnis zu verlieren. Hierfür bietet sich der Befehl git reset an. Beispielsweise entfernt git reset HEAD dateiname die Datei aus dem Staging-Bereich, während die Änderungen in der Datei erhalten bleiben. Dies ist nützlich, wenn man versehentlich falsche Dateien zum Commit vorgemerkt hat.

Commits zurücksetzen

Wenn ein Commit bereits erstellt wurde, der aber noch nicht in einen gemeinsamen Branch gepusht worden ist, kann man diesen mit git reset wieder rückgängig machen. Eine Variante ist git reset --soft HEAD~1, die den letzten Commit entfernt, die Änderungen aber im Staging belässt. Alternativ entfernt git reset --hard HEAD~1 den letzten Commit und verwirft auch alle Änderungen im Arbeitsverzeichnis. Vorsicht ist hier geboten, da --hard unwiederbringlich Daten löschen kann.

Änderungen in bereits gepushten Commits ändern

Falls die Änderungen schon auf einen entfernten Server gepusht wurden, sollte man vorsichtig sein. Das Zurücksetzen gepushter Commits erfordert häufig ein git push --force und kann bei gemeinsam genutzten Repositories zu Problemen führen, da andere Entwickler bereits auf dem alten Stand arbeiten könnten. In solchen Fällen ist es oft besser, einen neuen Commit mit der Korrektur zu erstellen oder einen sogenannten Revert-Commit zu verwenden, der die Änderungen eines vorhergehenden Commits aufhebt.

Fazit

Git bietet zahlreiche Möglichkeiten, lokale und bereits committete Änderungen rückgängig zu machen. Der geeignete Befehl hängt dabei vom aktuellen Status der Änderungen ab – ob sie unstaged, gestaged oder schon committet sind. Durch den bewussten Einsatz von git restore, git reset, git checkout und git revert können Entwickler Fehler beheben und ihre Historie sauber halten. Wichtig ist stets, vor harten Rücksetzoperationen ein Backup anzulegen oder sicherzustellen, dass keine wichtigen Daten verloren gehen.

0

Kommentare