Home » 2022 » Dezember

Archiv für den Monat: Dezember 2022

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.

==> Wie kann ich Dateien mit dem Editor „vi“ editieren?