Git Merge: Branches einfach wieder zusammenführen

Nachdem Sie einen Git Branch abgespaltet haben, um Änderungen auszuprobieren, können Sie die verschiedenen Zweige mit dem Befehl Git Merge wieder zusammenführen. Git unterscheidet dabei zwischen Fast-Forward-Merge und Three-Way-Merge.

Mehr als nur eine Domain!

Hier finden Sie Ihre perfekte Domain - z.B. .de Domain + persönlicher Berater

E-Mail-Postfach
24/7 Support
Wildcard SSL

Was ist Git Merge?

Die Arbeit an einem Projekt in Git bietet viele Freiheiten. Dabei ist es egal, ob Sie alleine für die Entwicklung zuständig sind oder in einem großen Team arbeiten, das für unterschiedliche Aspekte des großen Ganzen zuständig ist. Durch die Nutzung von Git Branches können Sie an Problemlösungen arbeiten und dabei völlig neue Ansätze ausprobieren. Selbst wenn etwas schief geht, hat Ihre Arbeit an Ihrem Git Branch zunächst keine Auswirkungen auf den Main Branch. Sie erstellen die unabhängige Entwicklungslinie mit dem Git-Command Git Branch und wechseln zwischen den einzelnen Abspaltungen mit Git Checkout.

Syntax von Git Merge

Git bietet zwei Wege, einen Git Merge durchzuführen: einen Fast-Forward-Merge und einen Three-Way-Merge. Wie sich diese beiden Vorgehensweisen unterscheiden, zeigen wir Ihnen im weiteren Verlauf. Die grundsätzliche Syntax von Git Merge für Branches ist allerdings immer gleich und sieht so aus:

git merge <branch></branch>

Der unter „<branch>“ angegebene Zweig wird in den aktuellen Branch integriert.

Git Branches vereinen

Die einfachste Kombination zweier Git Branches ist der Fast-Forward-Merge. Ist dieser nicht möglich, kann ein Three-Way-Merge durchgeführt werden.

Fast-Forward-Merge

Ein Fast-Forward-Merge wird durchgeführt, wenn es zwischen aktuellem Git Branch und dem Ziel-Zweig eine lineare Verbindung gibt. Ein Beispiel dafür wäre ein Arbeitsschritt, bei dem Sie einen Git Branch erstellen und an diesem arbeiten, während der Main-Branch unverändert bleibt. In diesem Fall versteht Git den Vorgang als Weiterführung des Masters und fügt diesen gemeinsam mit den Änderungen zu einem Commit zusammen. Das sieht beispielsweise so aus:

git checkout master
git merge arbeitsbranch
git branch -d arbeitsbranch

In diesem Beispiel wechseln Sie zunächst auf den Master-Branch, führen einen Git Merge mit dem Nebenzweig „arbeitsbranch“ durch, wodurch beide Branches verbunden werden, und löschen dann den redundanten Nebenzweig mit dem Befehl „git branch -d“.

Three-Way-Merge

Ein solcher Git Merge ist allerdings nicht möglich, wenn keiner der beiden Branches dem Ursprungszweig entspricht. Falls Sie also einen Nebenzweig abspalten, um an diesem zu arbeiten, und in der Zwischenzweit wird auch der Hauptbranch verändert, müssen Sie einen Three-Way-Merge durchführen. Das „three“ ergibt sich dabei aus den drei Commits: Hauptbranch, Nebenbranch und dem bearbeiteten Ursprungsbranch. Im folgenden Beispiel sehen Sie, wie ein solcher Git Merge mit drei Ausgangspunkten aussehen kann:

git checkout -b neues-feature master
git add datei
git commit -m "Beispielhafte Änderungen an diesem Projekt"
git add zweite-datei
git commit -m "Ende der beispielhaften Änderungen"
git checkout master
git add dritte-datei
git commit -m "Änderungen am Master vorgenommen"
git merge neues-feature
git branch -d neues-feature

In diesem Beispiel wurden Änderungen am Master und der Abspaltung vorgenommen, sodass kein Fast-Forward-Merge mehr durchgeführt werden konnte. Diese Situation entsteht vor allem dann, wenn Sie in einem größeren Team an einem Projekt arbeiten.

Konfliktlösung für Git Merge

Wenn Sie versuchen, Git Branches zu mergen, kann es zu einem weit verbreiteten Konflikt kommen. Wenn nämlich bei beiden Branches genau derselbe Part einer Datei verändert wurde, kann Git nicht mehr bestimmen, welche der beiden Versionen am Ende genutzt werden soll. In einem solchen Fall wird der Vorgang gestoppt, bevor der Git Merge durchgeführt wird. Sie haben dann die Möglichkeit, den Konflikt manuell zu lösen. Die Nachricht, die Sie erhalten, lautet:

CONFLICT (content): Merge conflict in <datei></datei>
Automatic merge failed; fix conflicts and then commit the result.

Über den Befehl Git Status, den Sie von Ihrem Git Cheat Sheet mit PDF-Download kennen, können Sie sich exakt anzeigen lassen, welche Dateien verändert werden müssen. Diese werden Ihnen dann als „unmerged“ übersichtlich ausgegeben. Ändern Sie die Dateien entsprechend, führen Sie sie mit Git Add aus und starten Sie schließlich einen erneuten Git Commit. Nun haben Sie die Möglichkeit, für die betroffenen Git Branches einen Merge durchzuführen. Im Anschluss können Sie die Git Branches, die Sie nicht mehr benötigen, löschen.

Tipp

Profitieren Sie von automatisierten Deployments! Mit Deploy Now von IONOS bringen Sie Ihr Projekt in nur drei Schritten online: Git Push, Build und Deploy. Dabei genießen Sie Vorzüge wie schnelles Setup, optimierte Workflows und maximale Skalierbarkeit.