Direkt zum Inhalt

Git Merge Tutorial: Ein umfassender Leitfaden mit Beispielen

In dieser Schritt-für-Schritt-Anleitung lernst du, wie du Zweige in Git effizient zusammenführen kannst. Erkunde verschiedene Merge-Strategien, löse Konflikte und wende Best Practices an, um deinen Git-Verlauf sauber zu halten.
Aktualisierte 13. März 2025  · 15 Min. Lesezeit

Wenn du schon einmal an einem Projekt mit mehreren Entwicklern gearbeitet hast (oder sogar selbst mehrere Funktionen verwaltet hast), weißt du, dass Verzweigungen wichtig sind, um die Dinge zu organisieren. Aber irgendwann müssen all diese Zweige wieder zusammenkommen - und da kommt git merge ins Spiel.

In diesem Tutorial gehe ich auf die verschiedenen Arten von Git-Zusammenführungen ein, wie sie funktionieren und wie man Zusammenführungskonflikte auflöst, wenn etwas nicht so läuft wie geplant. Zum Schluss verrate ich dir einige Best Practices, die dir helfen, git merge effektiv zu nutzen und häufige Fallstricke zu vermeiden.

Was ist Git Merge?

In einem Team arbeiten Entwickler oft an verschiedenen Funktionen, Fehlerbehebungen und Verbesserungen in separaten Zweigen. Sobald ihre Arbeit abgeschlossen ist, nutzen sie git merge, um die Änderungen zu integrieren.

Beim Zusammenführen werden Änderungen aus einem Zweig in einem anderen Zweig zusammengefasst, wobei die gesamte Versionsgeschichte erhalten bleibt. Sie vereinheitlicht die Commit-Historie beider Zweige.

Lass uns den Arbeitsablauf anhand eines Beispiels verstehen.

Ein gemeinsamer Basis-Commit spaltet sich in zwei Zweige auf, die zu separaten Haupt- und Feature-Tipps führen, bevor sie zusammengeführt werden. Bild vom Autor.

In der obigen Abbildung haben der Feature- und der Main-Zweig neue Commits erstellt, seit der Feature-Zweig erstellt wurde.

Ein Funktionszweig und der Hauptzweig weichen von einer gemeinsamen Basis ab und werden später zu einem einzigen Merge Commit zusammengefasst. Bild vom Autor.

Git merge nimmt alle neuen Commits aus beiden Zweigen, ausgehend von ihrer gemeinsamen Basis, und kombiniert sie zu einem einzigen Merge-Commit. Dann wird der Kopfzeiger aktualisiert, damit er auf diese neue Zusammenführung verweist.

Grundlegende Verwendung des Befehls git merge

Beim Merging geht es nicht nur darum, git merge auszuführen und Feierabend zu machen - es gibt ein paar wichtige Schritte, um alles in Ordnung zu bringen. In diesem Abschnitt gehen wir den gesamten Prozess durch, von der Vorbereitung deiner Zweige bis zur erfolgreichen Zusammenführung.

Schritt 1: Vorbereitung auf einen Zusammenschluss

Nur übertragene Änderungen in beiden Zweigen können zusammengeführt werden. Verwende also den Befehl git status, um nach unübertragenen Änderungen zu suchen und diese mit dem Befehl git commit vor dem Zusammenführen zu übertragen. 

Schritt 2: Checke den Zielzweig aus

Bevor du git mergeausführst, solltest du zum Zielzweig wechseln, in der Regel zum Hauptzweig. Wechsle mit git checkout main oder git switch mainzum Hauptzweig

Schritt 3: Zusammenführen eines Zweigs

Stelle sicher, dass der Hauptzweig mit dem Remote-Repository auf dem neuesten Stand ist. Führe dazu git pull origin main aus.

Jetzt bist du endlich bereit, den Funktionszweig mit dem Hauptzweig zusammenzuführen! Du kannst einen Befehl wie den folgenden verwenden:

git merge feature-branch

Schritt 4: Auflösen von Konflikten beim Zusammenführen (falls vorhanden)

Git versucht, Konflikte, die beim Zusammenführen auftreten können, automatisch zu lösen. Allerdings kann ein manuelles Eingreifen erforderlich sein, wenn das System den Konflikt nicht selbst lösen kann. 

Wenn zum Beispiel dieselben Zeilen in derselben Datei in verschiedenen Zweigen geändert werden, kann es zu Konflikten beim Zusammenführen kommen. 

Wenn Git einen Konflikt entdeckt, hält es die Zusammenführung an und fordert dich auf, ihn zu lösen. In diesem Fall:

  • Führe git status aus, um zu sehen, welche Dateien Konflikte haben. 
  • Öffne diese Dateien.
  • Überprüfe die widersprüchlichen Codezeilen und aktualisiere sie, um die Konsistenz in beiden Zweigen sicherzustellen.

Schritt 5: Bestätigen der Zusammenführung

Nachdem du die Konflikte gelöst hast, verwende den Befehl git add ., um die korrigierten Dateien bereitzustellen. Schließe dann die Zusammenführung ab, indem du eine Nachricht übermittelst: 

git merge -m “resolved conflicts”

In den folgenden Abschnitten werden wir uns genauer ansehen, wie man Zusammenführungskonflikte auflöst.  

Für Anfängergibt es hier einen kompletten Git-Spickzettel mit allen wichtigen Befehlen zum Erstellen, Aktualisieren, Löschen und Verwalten von Zweigen. 

Wenn du bereits etwas Erfahrung mit Git hast und eine Auffrischung der wichtigsten Befehle brauchst, schau dir dieses Tutorial zu den am häufigsten verwendeten Git-Befehlen mit Beispielen an.

Lerne heute die Git-Grundlagen

Für Anfänger: Master-Versionskontrolle mit Git.
Kostenloses Lernen beginnen

Arten von Zusammenführungen in Git

Das Verständnis der Git-Zusammenführungsarten hilft dir, die richtige Strategie für dein Szenario zu wählen. Hier sind die drei gängigen Ansätze für die Zusammenführung. 

Schnelles Zusammenführen

Wenn der Basiszweig keine neuen Commits hat, seit der Feature-Zweig erstellt wurde, verwendet Git eine Schnellvorlaufmethode. 

Wenn dein neuer Funktionszweig aktualisiert wird, während der Hauptzweig unverändert bleibt, verschiebt der Merge Commit den Kopfzeiger des Hauptzweigs auf den Funktionszweig. 

Es wird kein zusätzlicher Merge-Commit erstellt, so dass der Commit-Verlauf sauber und linear bleibt.

Dreifacher Zusammenschluss

Wenn sowohl der Basis- als auch der Feature-Zweig neue Commits haben, findet Git ihren gemeinsamen Vorgänger und erstellt einen neuen Merge-Commit. Dieser Commit kombiniert die Historie beider Zweige, wobei die individuelle Historie des Feature-Zweigs und des Hauptzweigs erhalten bleibt.

Im folgenden Beispiel sind "E" und "G" neue Commits für den Hauptzweig, nachdem der Feature-Zweig erstellt wurde. 

      C---D---F (feature-branch)
     /         
A---B---E---G (main) 

Es wird ein neuer Merge Commit "M" erstellt, der die Geschichte des Haupt- und des Funktionszweigs beibehält. 

       C---D---F
      /         \
 A---B---E---G---M (main)

Squash fusionieren

Squash merge cofasst alle Änderungen eines Feature-Branches in einem einzigen Commit zusammen und fügt ihn in den Zielzweig ein. Die individuelle Commit-Historie des Feature-Branches bleibt nicht erhalten. 

git merge --squash feature_branch_name

Ein Squash Merge ist besonders hilfreich, um Unordnung durch mehrere kleine Commits zu vermeiden und trotzdem den endgültigen Zustand des Features im Zielzweig zu erhalten.

Mehrere Zweige zusammenführen

Wenn du an großen Projekten arbeitest, musst du vielleicht mehrere Zweige zusammenführen - entweder einen nach dem anderen oder alle auf einmal. Welchen Ansatz du wählst, hängt von deinem Arbeitsablauf und der Komplexität der Änderungen ab. In diesem Abschnitt gehe ich auf beide Methoden ein und zeige dir, wann du sie effektiv einsetzen kannst.

Mehr als einen Zweig nacheinander zusammenführen

Wenn du Zweige einzeln zusammenführen möchtest, verwende den Befehl "Zusammenführen" nacheinander für jeden Feature-Zweig. 

Schritt 1: Wechsle zu dem Zielzweig, in dem du die Änderungen zusammenführen willst.

git checkout target_branch_name

Schritt 2: Führe den ersten Feature-Zweig zusammen, wie unten gezeigt.

git merge feature_branch_1

Schritt 3: Führe den zweiten Funktionszweig wie gezeigt zusammen.

git merge feature_branch_2

Wiederhole diesen Vorgang, bis alle anderen Zweige zusammengeführt sind.

Mehr als einen Zweig parallel zusammenführen

Befolge diese Schritte, um mehrere Feature-Zweige auf einmal zusammenzuführen.

Schritt 1: Wechsle zu dem Zielzweig, in dem du die Änderungen zusammenführen willst.

git checkout target_branch_name

Schritt 2: Führe den folgenden Befehl mit mehreren Feature-Zweigen aus 

git merge feature_branch_1 feature_branch_2 feature_branch_3

Wenn Git mehrere Zweige parallel zusammenführt, kann es zu Konflikten kommen. Wenn das passiert, fordert Git dich auf, sie manuell zu lösen.

Umgang mit Konflikten bei mehreren Zusammenführungen

Das Zusammenführen mehrerer Zweige ist nicht immer einfach - vor allem, wenn ein Zweig von einem anderen abhängt. 

Wenn du zum Beispiel feature_x in main vor feature_y zusammenführst, kann das zu Konflikten führen. Wenn verschiedene Zweige dieselben Dateien ändern, können parallele Zusammenführungen zu Konflikten führen, die sorgfältig gelöst werden müssen.

Befolge diese Schritte, um Zusammenführungskonflikte zu lösen:

  • Schritt 1: Führe git status aus, um zu sehen, welche Dateien Konflikte verursachen.
  • Schritt 2: Öffne die widersprüchlichen Dateien und korrigiere sie.
  • Schritt 3: Füge die Änderungen zur Bühne hinzu und bestätige sie.

Die Historie von Merge Commits verstehen 

Bei komplexen Konflikten brauchst du vielleicht mehr Informationen als das, was git status bietet. In solchen Fällen kannst du Befehle wie git log oder git show verwenden, um tief in die Geschichte einzutauchen.

  • git log: zeigt die gesamte Commit-Historie an, einschließlich der Merge-Commits. So kannst du einen bestimmten Zusammenschluss identifizieren, bei dem das Problem auftritt. 
  • git show: Wenn du mit dem obigen Befehl einen verdächtigen Merge Commit findest, kannst du ihn mit git show untersuchen. Dieser Befehl bietet eine detaillierte Ansicht der Übergabe und zeigt, was während der Zusammenführung geändert wurde. Sie gibt auch eine eindeutige Kennung für den übergeordneten Zweig aus, bevor eine bestimmte Zusammenführung stattfindet.
  • git diff: Du kannst die eindeutigen Bezeichner der übergeordneten und zusammengeführten Zweige aus den vorherigen Befehlen nehmen und git diff verwenden, um die Änderungen zwischen diesen beiden Zuständen zu vergleichen.

Git Merging Best Practices

Das Zusammenführen kann manchmal chaotisch sein, vor allem, wenn mehrere Entwickler an der gleichen Codebasis arbeiten. 

Wir haben zwar besprochen, wie man Konflikte löst, wenn sie entstehen, aber der beste Ansatz ist, sie zu verhindern, bevor sie entstehen. In diesem Abschnitt gehen wir auf praktische Tipps ein, damit deine Zusammenführungen reibungslos funktionieren und dein Git-Verlauf sauber bleibt.

Halte die Zweige klein und konzentriert

Große Zweige erhöhen das Risiko von sich überschneidenden Bearbeitungen, was zu mehr Konflikten führt. Um dies zu minimieren, solltest du an einem einzigen Feature pro Zweig arbeiten und die Zweige klein und konzentriert halten.

Häufiges Ziehen und Zusammenführen

Ziehe die neuesten Änderungen aus dem Remote-Repository , um deinen Basiszweig vor dem Zusammenführen zu aktualisieren. Ziehe regelmäßig Aktualisierungen aus dem Hauptzweig in deinen Feature-Zweig, um sie synchron zu halten. Diese verhindern später große und komplexe Konflikte.

Verwende die in Git integrierten Zusammenführungswerkzeuge

Anstatt Dateien manuell zu bearbeiten, kannst du die in Git integrierten Werkzeuge verwenden, um Konflikte in einer visuellen Benutzeroberfläche zu lösen. Wenn du git mergetool aufrufst, stehen dir drei Möglichkeiten zur Verfügung:

  • LOCAL - Version des Hauptzweigs. Wenn du diese Option wählst, wird der Inhalt der konfliktbehafteten Datei aus dem Hauptzweig beibehalten und die Änderungen aus dem Feature-Zweig werden ignoriert. 
  • REMOTE - Die Version des Funktionszweigs. Wenn du dies auswählst, wird der Inhalt des Feature-Zweiges auf die konfliktbehaftete Datei angewendet.
  • BASE - Damit werden die Änderungen der beiden Zweige, die miteinander in Konflikt stehen, kombiniert und zusammengeführt. 

Der Reihe nach zusammenführen

Wenn du mehrere Zweige zusammenführst, ist die Reihenfolge wichtig - vor allem, wenn ein Merkmal von einem anderen abhängt. Wenn feature_x auf feature_y aufbaut, kann es zu Konflikten kommen, wenn du feature_x zuerst zusammenführst. Um dies zu vermeiden, führe Zweige immer in der Reihenfolge ihrer Abhängigkeiten zusammen, damit der Prozess reibungslos verläuft und Konflikte minimiert werden.

Squash fusionieren 

Wie bereits erwähnt, werden beim Squash Merging alle Commits eines Feature-Branches zu einem einzigen Commit zusammengefasst, um die Commit-Historie sauber zu halten und potenzielle Merge-Konflikte zu reduzieren.

Ein alternativer Ansatz ist das Rebasing, bei dem die Änderungen des Funktionszweigs direkt auf den Basiszweig angewendet werden. So entsteht ein linearer Verlauf und es werden unnötige Merge Commits vermieden. Beide Methoden schreiben jedoch die Geschichte um und bewahren keine einzelnen Commits aus dem Feature-Branch.

Fazit

In diesem Git-Tutorial zum Zusammenführen haben wir alles von den Grundlagen des Zusammenführens bis hin zu den besten Methoden zur Vermeidung von Konflikten behandelt. Wenn du weißt, wie du git merge effektiv nutzen kannst, können Teams nahtlos zusammenarbeiten, Arbeitsabläufe reibungslos gestalten und den Codeverlauf sauber halten.

Wenn du deine Git-Kenntnisse vertiefen möchtest, schau dirdiesen Git-Kurs für Fortgeschrittene an, umfortgeschrittene Arbeitsabläufe und Techniken zu beherrschen!

Lerne heute die Git-Grundlagen

Für Anfänger: Master-Versionskontrolle mit Git.

FAQs

Was ist der Unterschied zwischen "git merge" und "git rebase"?

Während beide Befehle Änderungen von einem Zweig in einen anderen integrieren, erstellt git merge einen neuen Merge Commit, der die Historie beider Zweige beibehält. Im Gegensatz dazu wendet git rebase Commits aus dem Feature-Branch direkt auf den Target-Branch an, was zu einer linearen Commit-Historie führt, aber die Geschichte dabei umschreibt.

Kann ich eine Zusammenführung in Git rückgängig machen?

Ja, wenn du den Zusammenschluss noch nicht gepusht hast, kannst du ihn verwenden:

git reset --hard HEAD~1

Dadurch wird dein Zweig auf den Stand vor der Zusammenführung zurückgesetzt. Wenn die Zusammenführung bereits gepusht wurde, musst du git revert verwenden, um die Änderungen sicher rückgängig zu machen, während die Historie intakt bleibt.

Wie führe ich einen entfernten Zweig mit meinem lokalen Zweig zusammen?

Um einen entfernten Zweig mit deinem lokalen Zweig zusammenzuführen, befolge diese Schritte:

git fetch origin  

git checkout my-branch  

git merge origin/feature-branch 

So stellst du sicher, dass du die neuesten Updates aus dem Remote-Repository zusammenführst.

Wie kann ich unnötige Konflikte beim Zusammenführen verhindern?

Um Konflikte zu minimieren:

  • Ziehe regelmäßig die neuesten Änderungen, bevor du mit neuer Arbeit beginnst (git pull).
  • Führe in der Reihenfolge der Abhängigkeiten zusammen, wenn mehrere Zweige voneinander abhängen.
  • Verwende Feature Flags, um den Code schrittweise zu integrieren, anstatt langlebige Zweige zu verwenden.

Was passiert, wenn ich einen Zweig zusammenführe, der bereits zusammengeführt wurde?

Wenn ein Zweig bereits zusammengeführt wurde, ändert ein erneuter Aufruf von git merge feature-branch nichts mehr. Git erkennt, dass die Zweige eine gemeinsame Geschichte haben und bestätigt einfach, dass alles auf dem neuesten Stand ist.

Kann ich mehrere Zweige auf einmal zusammenführen?

Nein, Git unterstützt nicht das Zusammenführen mehrerer Zweige mit einem einzigen Befehl. Du musst sie der Reihe nach zusammenführen:

git merge feature-branch-1  

git merge feature-branch-2  

Bei Bedarf kannst du einen Integrationszweig erstellen, in dem du mehrere Zweige zusammenführst, und diesen dann in main zusammenführen.

Soll ich git merge --no-ff oder git merge --ff verwenden?

  • --no-ff (kein Fast-Forward-Merge) erstellt einen neuen Merge-Commit, so dass es einfacher ist, den Lernpfad zu verfolgen.
  • --ff (fast-forward merge) wendet die Änderungen wenn möglich direkt an und vermeidet zusätzliche Commits.

Für Projekte, bei denen das Verfolgen von Feature-Zweigen wichtig ist, wird --no-ff empfohlen.


Srujana Maddula's photo
Author
Srujana Maddula
LinkedIn

Srujana ist freiberufliche Tech-Autorin und hat einen vierjährigen Abschluss in Informatik. Das Schreiben über verschiedene Themen wie Data Science, Cloud Computing, Entwicklung, Programmierung, Sicherheit und viele andere ist für sie selbstverständlich. Sie liebt klassische Literatur und erkundet gerne neue Reiseziele.

Themen

Lerne mit diesen Kursen mehr über Git!

Kurs

Foundations of Git

4 hr
46.1K
Familiarize yourself with Git for version control. Explore how to track, compare, modify, and revert files, as well as collaborate with colleagues using Git.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen