Git-Merge-Konflikte mit Diff3 einfacher lösen

Merge-Konflikte zu beheben ist nicht immer leicht:

<<<<<<< HEAD
customer.setPriority(42);
=======
client.setPriority(32);
>>>>>>> master

Customer oder Client? 42 oder 32? Die richtige Lösung muss aus dem umliegenden Code abgeleitet werden. Hier kann es wie so oft helfen, den letzten gemeinsamen Stand der Versionen zu sehen.

git config --global merge.conflictstyle diff3

Ab sofort erscheint bei Konflikten mittig die ursprüngliche Variante. Durch diese wird ohne weiteres Code-Studium deutlich, welche Änderungen jeweils gemacht wurden und übernommen werden sollten:

<<<<<<< HEAD
customer.setPriority(42);
||||||| merged common ancestors
client.setPriority(42);
=======
client.setPriority(32);
>>>>>>> master

Im Beispiel wurde client in customer umbenannt und die Priorität auf 32 reduziert. Die sinnvolle Lösung ist demnach:

customer.setPriority(32);

Die ursprüngliche Darstellung lässt sich durch den Wert merge wiederherstellen:

git config --global merge.conflictstyle merge