Merge-Konflikte in Git lösen

Merge-Konflikte wirken erst beängstigend, sind aber gut beherrschbar. Lerne, wie du Konflikte erkennst, verstehst und sauber auflöst.

Teilen
Merge-Konflikte in Git lösen

Früher oder später passiert es jedem: Du führst zwei Branches zusammen und Git meldet einen Merge-Konflikt. Für viele Einsteiger ist das ein Schreckmoment. Dabei ist ein Konflikt nichts Schlimmes, sondern lediglich Git, das ehrlich sagt: "Hier kann ich nicht selbst entscheiden, bitte hilf mir." In diesem Beitrag zeige ich dir, wie du ruhig und souverän damit umgehst.

Wann entsteht ein Konflikt?

Ein Konflikt entsteht, wenn zwei Branches dieselbe Zeile einer Datei unterschiedlich verändert haben. Git kann dann nicht wissen, welche Version die richtige ist, und überlässt die Entscheidung dir. Solange unterschiedliche Dateien oder unterschiedliche Stellen bearbeitet wurden, mergt Git problemlos automatisch.

Typische Auslöser sind: zwei Personen ändern die gleiche Funktion, oder du selbst bearbeitest dieselbe Datei auf zwei Branches.

Einen Konflikt provozieren und erkennen

Wenn beim Merge ein Konflikt auftritt, bricht Git den Vorgang ab und informiert dich. Mit git status siehst du genau, welche Dateien betroffen sind.

# Merge starten
git merge feature-preise

# Git meldet: CONFLICT (content): Merge conflict in preise.txt

# Überblick, welche Dateien betroffen sind
git status

Die betroffenen Dateien erscheinen unter "Unmerged paths". Genau diese musst du dir jetzt ansehen und von Hand bereinigen.

Die Konfliktmarkierungen verstehen

Git fügt in die betroffene Datei spezielle Markierungen ein. Diese zeigen dir beide Versionen direkt nebeneinander. Es sieht zunächst kryptisch aus, folgt aber einem klaren Muster.

<<<<<<< HEAD
Preis: 19,99 Euro
=======
Preis: 24,99 Euro
>>>>>>> feature-preise

Der obere Teil zwischen <<<<<<< HEAD und ======= ist dein aktueller Branch. Der untere Teil bis >>>>>>> stammt aus dem Branch, den du hineinmergst. Deine Aufgabe: Entscheide dich für eine Version oder kombiniere beide.

Den Konflikt auflösen

Um den Konflikt zu lösen, öffnest du die Datei im Editor und entfernst die Markierungen. Übrig bleibt nur der Text, den du behalten möchtest. Danach markierst du die Datei als gelöst.

# Datei im Editor öffnen und Markierungen entfernen
# Danach die bereinigte Datei zum Merge vormerken
git add preise.txt

# Den Merge abschließen
git commit

Mit git add sagst du Git: "Diese Datei habe ich erledigt." Sobald alle Konflikte bereinigt sind, schließt ein git commit den Merge ab. Git schlägt dir dafür meist schon eine passende Commit-Nachricht vor.

Einen Merge abbrechen

Manchmal merkst du mittendrin, dass du den Merge gar nicht machen möchtest. Kein Problem, du kannst jederzeit zum Stand davor zurückkehren.

# Den laufenden Merge komplett abbrechen
git merge --abort

# Bei Konflikten zeigen, welche Dateien noch offen sind
git diff --name-only --diff-filter=U

Mit git merge --abort ist es, als wäre der Merge nie passiert. Das gibt dir Sicherheit, in Ruhe zu experimentieren, ohne etwas kaputtzumachen.

Konflikte von vornherein vermeiden

Die beste Konfliktlösung ist, Konflikte gar nicht erst groß werden zu lassen. Ein paar Gewohnheiten helfen enorm.

# Regelmäßig den aktuellen Stand vom Hauptzweig holen
git switch main
git pull

# Den Feature-Branch aktuell halten
git switch feature-x
git merge main

Wenn du deinen Branch häufig mit main abgleichst, bleiben die Konflikte klein und überschaubar. Kleine, häufige Merges sind viel leichter zu lösen als ein riesiger Merge nach Wochen.

Fazit

Merge-Konflikte sind ein normaler Teil der Zusammenarbeit und kein Grund zur Panik. Du erkennst sie mit git status, verstehst die Markierungen, wählst die richtige Version und schließt mit git add und git commit ab. Und wenn doch einmal alles drunter und drüber geht, bringt dich git merge --abort sicher zurück. Übe das Auflösen bewusst an einem Testprojekt, dann verlieren Konflikte schnell ihren Schrecken.