Wenn Sie einen Pull Request öffnen, hat Ihr Code bereits eine Reise hinter sich: von einer Bearbeitung in Ihrem Editor über einen Commit in Ihrer lokalen Historie bis zu einem Push, der ihn mit allen anderen teilt. Meistens ist dieser Weg unsichtbar. Doch wenn zwei Personen dieselbe Zeile ändern, hält Git an und bittet Sie, das zu klären.

Wo eine Änderung tatsächlich liegt

Git hält Ihre Arbeit an einigen getrennten Orten. Ihre Arbeitskopie ist die Datei, wie Sie sie bearbeiten. git add kopiert eine Änderung in den Staging-Bereich. git commit speichert sie als Snapshot in Ihrer lokalen Historie. Erst git push sendet Ihre Commits an das Remote-Repository, von wo ein Teammitglied sie per git pull abholen kann.

  1. 01Arbeitskopie
  2. 02Staging-Bereich
  3. 03Lokale Historie
  4. 04Remote
  5. 05Pull im Team
Der Weg einer Änderung. Ein Konflikt entsteht, wenn ein Pull zwei Commits nicht zusammenführen kann.

Wie Git eine Änderung sieht

Git speichert die Historie als Snapshots, vergleicht zwei davon aber Zeile für Zeile. Zeilen, die in beiden Versionen vorkommen, sind Anker; die Abschnitte zwischen den Ankern sind Änderungen. Die längste gemeinsame Teilfolge von Zeilen zu finden, hält einen Diff stabil, selbst wenn sich Änderungen drumherum häufen.

Warum es ein Konflikt ist: die Merge-Basis

Ein Branch ist ein verschiebbarer Zeiger auf einen Commit. Wenn zwei Personen vom selben Commit abzweigen – ihrer Merge-Basis – und Änderungen vornehmen, verzweigen sich ihre Historien. Git argumentiert immer relativ zu dieser Basis. Hat nur eine Seite einen Bereich geändert, übernimmt Git die Änderung. Ein Konflikt entsteht nur, wenn beide Seiten dieselben Zeilen unterschiedlich geändert haben.

<<<<<<< ours
owner: ana
=======
owner: marko
>>>>>>> theirs
Git kann nicht wissen, welchen Owner Sie meinten, also schreibt es Marker und überlässt Ihnen die Entscheidung.

Die Lösung: der Three-Way-Merge

Die Lösung besteht darin, alle drei Versionen gleichzeitig zu betrachten (die gemeinsame Basis, die eigene und die fremde Seite) und einen Abschnitt nach dem anderen aufzulösen. Genau das macht MergeForge: ein Konfliktlöser mit drei Spalten für VS Code und Cursor – die eigene Seite links, die fremde rechts und das zusammengeführte Ergebnis in der Mitte.

  • Apply all non-conflicting übernimmt jede Änderung, die nur eine Seite vorgenommen hat, sodass Sie sich auf echte Konflikte konzentrieren können.
  • » / « wählt für einen einzelnen Konfliktabschnitt eine Seite; das Ergebnis wird sofort neu aufgebaut.
  • Magic Resolve kombiniert reine Einfügungen aus beiden Branches und überlässt Ihnen echte beidseitige Umschreibungen.

Unter der Haube steckt ein echter diff3-Three-Way-Merge, aus derselben Algorithmenfamilie wie bei Git, getestet gegen die Ausgabe von git merge-file bis hin zu CRLF gegenüber LF, Byte-Order-Marks und Leerzeichen am Zeilenende. Wenn ein Konflikt Urteilsvermögen erfordert, kann ein optionaler KI-Assistent ihn erklären oder eine Lösung als überprüfbare Abschnitte vorschlagen – nie als stille Umschreibung.

MergeForge ist für VS Code und Cursor verfügbar. Installationslinks finden Sie auf der Produktseite; Quellcode und Tests können Sie auf GitHub (öffnet in einem neuen Tab) einsehen.