git ready

Lerne Git Commit für Commit
von Nick Quaranto, Übersetzung von Nico Gulden

Eine von beiden Dateien in einem Merge-Konflikt behalten

eingetragen am 25 Feb 2009

Beim Auflösen eines Merge-Konflikts, möchte man manchmal einfach die eine oder die andere Datei behalten. Du musst nicht die einzelnen Dateien öffnen und hunderte von Konflikten beheben. Du brauchst nur die gewünschte Datei auswählen und schon bist du fertig. Bedauerlicherweise ist das in älteren Version von Git nicht besonders klar, aber in jüngeren Versionen ist es viel einfacher. Großen Dank an Kevin Old für seinen Beitrag zu dem Thema, der mich an das Problem erinnerte.

Hier das Szenario: Du bist mittendrin in einem Merge und du möchtest die eine oder die andere Datei behalten.

$ git merge master     
  Auto-merged _layouts/default.html
  CONFLICT (content): Merge conflict in _layouts/default.html
  Auto-merged index.html
  CONFLICT (content): Merge conflict in index.html
  Automatic merge failed; fix conflicts and then commit the result.

Hier gibt es zwei Dateien, die nicht verschmolzen (merged) sind. Laut git checkout Manpage gibt es eine --theirs und --ours Option für den Befehl. Die erste Option behält die Version der Datei, die du einbringst und die andere Option behält die Datei in ihrer Originalfassung.

Die folgenden Befehle behalten unsere Version für index.html und verwenden dann nur die andere Version der Datei _layouts/default.html.

git checkout --ours index.html
git checkout --theirs _layouts/default.html

Bedauerlicherweise gibt es diese Optionen nur in Git 1.6.1 und höher. Wenn du eine ältere Version verwendest und nicht aktualisieren möchtest, gibt es eine Umleitung. Um --theirs zu emulieren, ist folgendes zu tun:

git reset -- _layouts/default.html
git checkout MERGE_HEAD -- _layouts/default.html

Und für --ours:

git reset -- index.html
git checkout ORIG_HEAD -- index.html

Sobald die Konflikte gelöst sind, übernimmt git add die notwendigen Änderungen und git commit bestätigt sie. Wenn du beim Merge Probleme hattest, deren Lösung anderen helfen könnte, einfach einen Kommentar abgeben.