Nachdem Sie einen Git Branch ab­ge­spal­tet haben, um Än­de­run­gen aus­zu­pro­bie­ren, können Sie die ver­schie­de­nen Zweige mit dem Befehl Git Merge wieder zu­sam­men­füh­ren. Git un­ter­schei­det dabei zwischen Fast-Forward-Merge und Three-Way-Merge.

KI-Assistent kostenlos – Ihr smarter All­tags­hel­fer
  • DSGVO-konform & sicher gehostet in Deutsch­land
  • Pro­duk­ti­vi­tät steigern – weniger Aufwand, mehr Output
  • Direkt im Browser starten – ohne In­stal­la­ti­on

Was ist Git Merge?

Die Arbeit an einem Projekt in Git bietet viele Frei­hei­ten. Dabei ist es egal, ob Sie alleine für die Ent­wick­lung zuständig sind oder in einem großen Team arbeiten, das für un­ter­schied­li­che Aspekte des großen Ganzen zuständig ist. Durch die Nutzung von Git Branches können Sie an Pro­blem­lö­sun­gen arbeiten und dabei völlig neue Ansätze aus­pro­bie­ren. Selbst wenn etwas schief geht, hat Ihre Arbeit an Ihrem Git Branch zunächst keine Aus­wir­kun­gen auf den Main Branch. Sie erstellen die un­ab­hän­gi­ge Ent­wick­lungs­li­nie mit dem Git-Command Git Branch und wechseln zwischen den einzelnen Ab­spal­tun­gen mit Git Checkout.

Syntax von Git Merge

Git bietet zwei Wege, einen Git Merge durch­zu­füh­ren: einen Fast-Forward-Merge und einen Three-Way-Merge. Wie sich diese beiden Vor­ge­hens­wei­sen un­ter­schei­den, zeigen wir Ihnen im weiteren Verlauf. Die grund­sätz­li­che Syntax von Git Merge für Branches ist al­ler­dings immer gleich und sieht so aus:

git merge <branch></branch>

Der unter „<branch>“ an­ge­ge­be­ne Zweig wird in den aktuellen Branch in­te­griert.

Git Branches vereinen

Die ein­fachs­te Kom­bi­na­ti­on zweier Git Branches ist der Fast-Forward-Merge. Ist dieser nicht möglich, kann ein Three-Way-Merge durch­ge­führt werden.

Fast-Forward-Merge

Ein Fast-Forward-Merge wird durch­ge­führt, wenn es zwischen aktuellem Git Branch und dem Ziel-Zweig eine lineare Ver­bin­dung gibt. Ein Beispiel dafür wäre ein Ar­beits­schritt, bei dem Sie einen Git Branch erstellen und an diesem arbeiten, während der Main-Branch un­ver­än­dert bleibt. In diesem Fall versteht Git den Vorgang als Wei­ter­füh­rung des Masters und fügt diesen gemeinsam mit den Än­de­run­gen zu einem Commit zusammen. Das sieht bei­spiels­wei­se 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 Ne­ben­zweig „ar­beits­branch“ durch, wodurch beide Branches verbunden werden, und löschen dann den red­un­dan­ten Ne­ben­zweig mit dem Befehl „git branch -d“.

Three-Way-Merge

Ein solcher Git Merge ist al­ler­dings nicht möglich, wenn keiner der beiden Branches dem Ur­sprungs­zweig ent­spricht. Falls Sie also einen Ne­ben­zweig abspalten, um an diesem zu arbeiten, und in der Zwi­schen­zweit wird auch der Haupt­branch verändert, müssen Sie einen Three-Way-Merge durch­füh­ren. Das „three“ ergibt sich dabei aus den drei Commits: Haupt­branch, Ne­ben­branch und dem be­ar­bei­te­ten Ur­sprungs­branch. Im folgenden Beispiel sehen Sie, wie ein solcher Git Merge mit drei Aus­gangs­punk­ten 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 Än­de­run­gen am Master und der Ab­spal­tung vor­ge­nom­men, sodass kein Fast-Forward-Merge mehr durch­ge­führt werden konnte. Diese Situation entsteht vor allem dann, wenn Sie in einem größeren Team an einem Projekt arbeiten.

Kon­flikt­lö­sung für Git Merge

Wenn Sie versuchen, Git Branches zu mergen, kann es zu einem weit ver­brei­te­ten 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 durch­ge­führt wird. Sie haben dann die Mög­lich­keit, 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“ über­sicht­lich aus­ge­ge­ben. Ändern Sie die Dateien ent­spre­chend, führen Sie sie mit Git Add aus und starten Sie schließ­lich einen erneuten Git Commit. Nun haben Sie die Mög­lich­keit, für die be­trof­fe­nen Git Branches einen Merge durch­zu­füh­ren. Im Anschluss können Sie die Git Branches, die Sie nicht mehr benötigen, löschen.

Tipp

Pro­fi­tie­ren Sie von au­to­ma­ti­sier­ten De­ploy­ments! 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, op­ti­mier­te Workflows und maximale Ska­lier­bar­keit.

Zum Hauptmenü