Ein Merge-Konflikt ist die Stelle, an der Git nicht entscheiden kann, welche von zwei Änderungen gilt. Er entsteht, wenn zwei Stränge dieselbe Zeile verschieden geändert haben. Git bricht dann ab, markiert die Stelle in der Datei und überlässt die Entscheidung einem Menschen.
- Merge-Konflikt
Die Stelle, an der Git nicht entscheiden kann, welche von zwei Änderungen gilt.
Beispiel: „Der Merge-Konflikt betraf drei Zeilen in derselben Vorlage.“Auch: Konflikt, Merge Conflict. Er ist kein Fehler, sondern der vorgesehene Ablauf: Git fragt zurück, statt zu raten.
Betroffen sind auch Fälle ohne gleiche Zeile, etwa wenn eine Seite eine Datei löscht und die andere sie ändert.
Wie ein Merge-Konflikt in der Datei aussieht
Git schreibt beide Fassungen untereinander in die Datei und trennt sie durch Markierungen. Oben steht, was auf deiner Seite stand, unten, was von der anderen kommt, dazwischen eine Trennlinie.
Deine Aufgabe ist, daraus eine Fassung zu machen und die Markierungen zu entfernen. Bleiben sie stehen, landen sie im Commit, und spätestens die Build-Pipeline fällt darüber.
Warum ein Merge-Konflikt selten technisch ist
Weil die Frage, welche Fassung gilt, fast immer inhaltlich ist. Zwei Leute haben dieselbe Stelle verschieden gelöst, und eine der beiden Lösungen ist besser, oder es braucht eine dritte.
Deshalb löst man einen Konflikt nicht allein, wenn man die andere Seite nicht versteht. Eine Rückfrage kostet fünf Minuten, eine falsch aufgelöste Stelle kostet die Fehlersuche von nächster Woche.
Wie man Merge-Konflikte klein hält
Drei Dinge helfen, und alle drei sind Gewohnheiten. Kurze Branches, weil wenig Zeit wenig Gelegenheit zum Auseinanderlaufen lässt. Täglich den Hauptstand hereinholen, damit ein Konflikt klein auftritt statt groß. Und abgegrenzte Aufgaben, damit nicht zwei Leute an derselben Datei sitzen.
Was nicht hilft, ist ein Force Push über den Konflikt hinweg. Er entscheidet den Konflikt heimlich zugunsten einer Seite, statt ihn auszuräumen.