Tutorials

Merge-Konflikte auf dem Mac lösen, ohne das Terminal

Konfliktmarker verstehen, ours und theirs auseinanderhalten und einen Konflikt in Ruhe auflösen. Ein visueller Weg ohne Terminal-Panik.

Merge-Konflikte auf dem Mac lösen, ohne das Terminal

Was ein Merge-Konflikt wirklich ist

Ein Merge-Konflikt entsteht, wenn Git zwei Änderungen zusammenführen soll, die dieselbe Stelle einer Datei betreffen. Solange zwei Branches an verschiedenen Zeilen arbeiten, führt Git sie ohne Nachfrage zusammen. Sobald sich die Änderungen überlappen, kann Git nicht entscheiden, welche Version gewinnen soll, und fragt Dich. Das ist kein Fehler und kein Zeichen, dass etwas kaputt ist. Es ist der normale Moment, in dem Git ehrlich sagt, dass hier eine menschliche Entscheidung nötig ist.

Konflikte treten typischerweise beim Mergen eines Branches, beim Rebasen oder beim Anwenden eines Stash auf. In allen Fällen ist der Mechanismus derselbe, und in allen Fällen bleibt Dein Projekt in einem sicheren, klar definierten Zwischenzustand, bis Du den Konflikt aufgelöst hast.

Warum das Terminal hier oft Panik auslöst

Auf der Kommandozeile meldet Git einen Konflikt mit einer knappen Zeile und überlässt Dir den Rest. Du siehst nicht sofort, welche Dateien betroffen sind, wie die beiden Versionen nebeneinander aussehen und was ein sicherer nächster Schritt wäre. Genau in diesem Moment googeln viele Entwickler hektisch nach Befehlen, kopieren etwas, das sie nicht ganz verstehen, und machen den Zustand schlimmer.

Dabei ist der Konflikt selbst harmlos. Was fehlt, ist Übersicht. Ein grafischer Git-Client zeigt Dir dieselbe Information ruhig und lesbar, und genau das nimmt den Stress raus.

Die Konfliktmarker lesen

Wenn ein Konflikt auftritt, schreibt Git besondere Marker in die betroffene Datei:

<<<<<<< HEAD
Deine aktuelle Version (ours)
=======
die Version aus dem anderen Branch (theirs)
>>>>>>> feature/login

Der obere Block zwischen den spitzen Klammern und der Trennlinie ist ours, also der Stand des Branches, auf dem Du gerade bist (HEAD). Der untere Block ist theirs, der Stand, den Du hereinholst. Auflösen heißt: entscheiden, welche Zeilen bleiben, die Marker entfernen und die Datei in den gewünschten Endzustand bringen. Das kann eine der beiden Seiten sein, eine Mischung aus beiden oder etwas komplett Neues.

Schritt für Schritt einen Konflikt auflösen

  1. Verschaffe Dir zuerst einen Überblick, welche Dateien überhaupt betroffen sind. Ein guter Client listet sie als eigene Gruppe, damit Du nichts übersiehst.
  2. Öffne die erste Datei und lies beide Seiten. Frag Dich nicht sofort, welche gewinnt, sondern was der korrekte Endzustand ist.
  3. Entscheide pro Konfliktblock. Manchmal ist ours richtig, manchmal theirs, oft brauchst Du Teile von beiden.
  4. Entferne die Marker und lass nur den gewünschten Code stehen. Kein einziges der Zeichen mit den spitzen Klammern darf übrig bleiben.
  5. Speichere, markiere die Datei als gelöst und wiederhole das für jede weitere Konfliktdatei.
  6. Wenn alle Dateien gelöst sind, schließe den Merge mit einem Commit ab. Beim Rebase heißt der Schritt fortsetzen statt committen, die Logik bleibt gleich.

ours oder theirs? Die Entscheidung

Die häufigste Frage ist, welche Seite gewinnen soll. Es gibt keine pauschale Antwort, aber eine gute Faustregel: Entscheide nach Absicht, nicht nach Herkunft. Frag Dich, welches Verhalten der Code am Ende haben soll, und wähle die Zeilen, die dieses Verhalten erzeugen. Wenn beide Seiten wichtige Teile beitragen, ist die richtige Lösung fast immer eine bewusste Kombination.

Ein häufiger Irrtum ist, blind eine Seite komplett zu übernehmen, nur um den Konflikt schnell loszuwerden. Damit verlierst Du leicht Änderungen, die jemand anderes bewusst gemacht hat. Nimm Dir die halbe Minute und lies beide Versionen.

Wie Spire dabei hilft

Spire ist ein nativer Git-Client für den Mac, gebaut mit SwiftUI und AppKit. Bei einem Konflikt bekommst Du die betroffenen Dateien als klare Liste und siehst die beiden Seiten strukturiert nebeneinander, statt rohe Marker in einer Textdatei zu suchen. Du markierst gelöste Dateien mit einem Klick, und Spire hält den Merge-Zustand sauber, bis Du fertig bist. Weil Spire ein eigenes Git mitbringt, funktioniert das auch dann, wenn auf dem Rechner gar kein Git installiert ist.

Wichtig und ehrlich: Ein Werkzeug nimmt Dir die inhaltliche Entscheidung nicht ab. Was es abnimmt, ist die Sucherei, das Zittern vor dem falschen Befehl und die Angst, den Zustand zu zerstören. Genau das macht den Unterschied zwischen Panik und Routine.

Nach dem Merge prüfen und committen

Bevor Du den Abschluss-Commit machst, wirf einen Blick auf das Gesamtergebnis. Baut das Projekt noch? Laufen die Tests? Ein Konflikt ist erst dann wirklich gelöst, wenn das Ergebnis funktioniert, nicht schon, wenn die Marker weg sind. Schreib in die Commit-Message ruhig kurz dazu, welche Entscheidung Du getroffen hast, damit spätere Leser den Kontext verstehen.

Kurze Checkliste

  • Ein Konflikt ist normal, kein Schaden.
  • ours ist Dein aktueller Branch, theirs kommt herein.
  • Nach Absicht entscheiden, nicht nach Herkunft.
  • Alle Marker restlos entfernen.
  • Erst prüfen, dass es funktioniert, dann abschließen.

Teste Spire an deinen eigenen Repositories.

30 Tage kostenlos, kein Account, keine Kreditkarte. Der native Git-Client, der dir gehört statt gemietet zu sein.