Git HowTo: Vorhergehenden Commit ändern
Manchmal merkt man es zu spät und es ist passiert: Man hat weitere Änderungen committet und merkt, dass man die vorherige Commitmessage anpassen muss. Wäre es nur der letzte Commit gewesen, würde ein git commit --amend
reichen: Wenn der zu ändernde Commit in Git aber weiter zurück liegt, muss man einen längeren Weg über git rebase
nehmen.
Wenn noch nicht committete Änderungen im Arbeitsverzeichnis liegen, müssen diese zuerst mit git stash
zwischengespeichert werden. Dadurch werden alle Änderungen auf den Status des HEAD zurückgesetzt.
Dann kann mit git rebase -i [Commit ID des Commits vor dem zu ändernden]
der rebase gestartet werden.
Die Commit ID kann übrigens ganz einfach aus der Ausgabe von git log
ausgelesen werden :))
Es öffnet sich der Standard Editor, wo die zu bearbeitenden Commits ausgewählt werden können.
Wird das pick durch ein r oder reword ersetzt, kann man im weiteren verlauf die Commitmessage ändern.
Durch ersetzen mit e oder edit kommt man zurück auf die Konsole und kann weitere Änderungen vornehmen und ganz normal committen.
Sind alle Änderungen und Anpassungen gemacht, kann mit git stash apply
der vorherige Stand bearbeiteter Dateien wieder hergestellt werden.
Mit ein paar Befehlen ist es also möglich, einfach einen vorherigen Commit in Git anzupassen. Wenn die zu bearbeitenden Commits bereits gepusht sind, funktioniert dies jedoch nicht, da sich die Commit-IDs ändern und dadurch kein weiteres Pushen möglich ist!
Code
git stash
git rebase -i 4e6a1648
git stash apply
git status