Verwendung von vimdiff als git mergetool
Beim ersten Merge-Konflikt schlägt git zwar i.d.R. ein Mergetool vor, mit dem folgenden Befehl kann vimdiff aber bereits vorab konfiguriert werden:
git config global merge.tool vimdiff
Der Aufruf des Mergetools nach einem Merge-Konflikt (z.B.: „CONFLICT (content): Merge conflict in test.txt“) erfolgt mit:
git mergetool
Daraufhin öffnet sich vimdiff mit mehreren Fenstern (eigentlich: „Buffer“ in der Split-Ansicht), die folgende Bezeichnungen tragen:
- „LOCAL“ (kurz: „LO“): Aktueller Branch/Zweig.
- „BASE“ (kurz: „BA“): Gemeinsamer Vorgänger (Zustand vor LOCAL- bzw. REMOTE-Änderungen).
- „REMOTE“ (kurz: „RE“): Branch/Zweig der mittels „git merge“ mit LOCAL hätte zusammengefügt werden sollen.
- „MERGED“ (bzw. keine Bezeichnung, kurz: „ME“): Gewünschtes Merge-Ergebnis.
Zwischen den Fenstern kann mit „Strg + w“ bzw. „Ctrl + w“ navigiert werden, das ist grundsätzlich nicht erforderlich, da sämtliche Arbeiten in „MERGED“ ausgeführt werden können/sollen.
Die häufigsten erforderlichen Befehle sind (jeweils ohne Anführungszeichen auszuführen):
- „]c“: Nächster Unterschied.
- „[c“: Vorheriger Unterschied.
- „zo“: Text einblenden.
- „zc“: Text ausblenden.
- „:diffupdate“: Dateien erneut auf Unterschiede überprüfen.
- „:diffget RE“ (statt „RE“ kann z.B. auch „LO“ angegeben werden): Änderung von „REMOTE“ übernehmen.
Nachdem alle Unstimmigkeiten beseitigt worden sind, können wie gewohnt mit „:wqa“ alle Fenster gespeichert und geschlossen und mit „git commit“ fortgefahren werden.