Merging und Lösen von Merge-Konflikten

Bei einem Merge-Request bitten Sie die Person, die ein anderes Projekt verwaltet, dem Projekt Ihre Änderungen hinzuzufügen. Navigieren Sie zum Projekt, in das Ihre Änderungen integriert werden sollen, klicken Sie auf das Plus-Symbol und dann auf Neuer Merge Request.

merge request

Wählen Sie danach unter Source Branch das Quellprojekt aus, an dem Sie gearbeitet haben sowie den entsprechenden Branch. Unter Target Branch geben Sie das Projekt und den Branch an, zu denen Ihr Code hinzugefügt werden soll. Klicken Sie abschließend auf Compare branches and continue.

compare branches

Geben Sie einen Titel zu Ihrem Merge-Request an. Ihnen stehen zudem weitere Optionen zur Verfügung; so können Sie unter Assignee eine Person auswählen, die Ihre Änderungen überprüft. Klicken Sie dann auf Submit merge request.

submit merge request

Merging und Lösen von Merge-Konflikten

Eine Stärke von git ist das Zusammenführen von verschiedenen Programmquelldateien. Dies funktioniert oftmals automatisch. Allerdings können dabei zwei verschiedene Arten von Konflikten auftreten:

Bearbeitungskonflikt

Dieser Konflikt tritt dann auf, wenn zwei Entwickler:innen dieselbe Codezeile verändert haben. Git kann dann nicht automatisch entscheiden, welche der Änderungen übernommen werden soll. Ein Konflikt wird in git wie folgt angezeigt:

Auto-merge index.html  
CONFLICT (content): Merge conflict in index.html  
Automatic merge failed; fix conflict and then commit the result.

Sie können den Konflikt zum einen manuell lösen. Dazu editieren Sie die betroffene Datei und entscheiden, welche der Änderungen übernommen werden sollen. Entfernen Sie zudem die Konfliktmarkierungen. Danach führen Sie einen Commit durch. Weiterhin können Sie auch ein spezielles Merge-Tool verwenden, das mit folgendem Befehl aufgerufen wird:

git mergetool
Inhaltskonflikt

Dieser Konflikt tritt dann auf, wenn zwei Entwickler an unterschiedlichen Teilen des Programms etwas verändert haben, sodass diese dann nicht mehr gemeinsam funktionieren. So könnte eine Person die Funktionsweise eines Features verändern, die andere Person jedoch gleichzeitig etwas Neues programmieren, welches auf der alten Funktionsweise beruht.

Inhaltliche Merge-Konflikte sind deutlich schwerer zu lösen als Bearbeitungskonflikte. In der professionellen Software-Entwicklung sichert man sich für diese Fälle durch automatisierte Tests ab.