Git Commit-Meldung ändern
Die Meldung des letzten Commits kann mit dem GIT-Ammend angepasst werden:
git commit --amend "Neue meldung, mit 'amend' erstellt"
Leider geht das nur für den letzten Commit. Will man mehrere Commits anpassen kann man das mittels dem Rebase Feature. Zur Erinnerung: Rebase operiert erstens auf dem derzeitigen Branch und einem als Parameter mitgegebenen Ziel-Branch. Vom gemeinsamen Vorfahren der beiden Branches ausgehend werden alle Commits bis zum derzeitigen Branch (als Commit-Kopie)auf den neuen Branch angefügt.
Gehen wir von dieser Ausganslage aus:
C1 -> C2 -> CA1 -> CA2 \-> CB1 -> CB2
Dann ist C2 der gemeinsame Vorfahre von CB2 und CA2. Wenn HEAD (derzeitiger Brach) auf CB2 zeigt und wir
git rebase CA2
machen, dann resultiert:
C1 -> C2 -> CA1 -> CA2 -> CB1cpy -> CB2cpy \-> CB1 -> CB2
CB1 und CB2 werden gelöscht, weil nach der Operation weder HEAD noch ein Branch auf diese Commits zeigt.
Nun zurück zu unserem Rename-Problem: Wie können wir Rebase benutzen um Commit-Meldungen zu ändern?
Ausgangslage ist:
C1 -> Cfalsch1 -> Cfalsch2
Wir stellen sicher, dass wir auf Cfalsch2 sind und setzen ab:
git rebase -i C1
Wir fügen also Kopien von Cfalsch1 und Cfalsch2 nochmals as Nachfolger von C1 ein.
Zusätzlich teilen wir GIT mittels opeion „-i“ mit, dass wir das im interaktiven Modus machen wollen.
Der Interaktive Modus erlaub uns (unter anderem) die Commit-Meldungen für die Commit-Kopien zu setzen.
Er tut das in dem er uns in einem VI editor ein batch script editieren lässt. In unserem Beispiel schlägt er folgendes Script mit zwei Kommandos vor:
pick Cfalsch1 Irgend eine falsche Commit-Meldung
pick Cfalsch2 Irgend eine andere falsche Commit-Meldung
Um die für den rebase benutzten Commit-Meldungen anzupassen müssen wir das command file wie folgt anpassen:
r Cfalsch1 Irgend eine verbesserte Commit-Meldung
r Cfalsch2 Irgend eine andere verbesserte Commit-Meldung
Haben wir fertig editiert quittieren wir das in der für VI editoren gebräuchlichen Art:
ESC gefolgt von :wq!
Sodann wird der rebase inclusive unseren Umbenennungen ausgeführt.