13 Merging-Strategien

Beim Arbeiten mit Git bieten sich verschiedene Merging-Strategien an, die sich durch unterschiedliche Ansätze zur Integration von Branches auszeichnen. Jede dieser Strategien hat spezifische Anwendungsfälle und sollte je nach Projektanforderungen und Teampräferenzen gewählt werden. Die drei wichtigsten Strategien sind Fast-Forward Merge, Merge Commit und Squash Merge. Im Folgenden werden diese Strategien detailliert beschrieben, gefolgt von Diagrammen, die den Zustand des Git-Baums vor und nach dem Merge visualisieren.

13.1 Fast-Forward Merge

Fast-Forward Merge ist die einfachste Form eines Merges. Diese Strategie wird angewendet, wenn der Ziel-Branch (z. B. der main-Branch) seit dem letzten Commit des zu mergenden Branches (z. B. feature-branch) nicht verändert wurde. Git kann den Branch einfach “vorwärts bewegen”, indem es den HEAD-Zeiger auf den neuesten Commit des Feature-Branches setzt, ohne dabei einen neuen Merge-Commit zu erstellen.

13.1.1 Vorteile:

13.1.2 Nachteile:

13.1.3 Beispiel-Diagramm

Vor dem Merge:

Nach dem Fast-Forward Merge:

13.2 Merge Commit

Bei einem Merge Commit wird ein zusätzlicher Commit erstellt, der die beiden Branches zusammenführt, selbst wenn es keine Konflikte gibt. Dies ist die Standardstrategie, wenn der Ziel-Branch seit der Erstellung des Feature-Branches weiterentwickelt wurde. Git erstellt einen neuen Merge-Commit, um die beiden Branches zu einem gemeinsamen Punkt zu vereinen. Diese Strategie bewahrt die vollständige Historie beider Branches, was insbesondere bei der Nachverfolgung von parallelen Entwicklungen hilfreich ist.

13.2.1 Vorteile

13.2.2 Nachteile

13.2.3 Beispiel-Diagramm

Vor dem Merge:

Nach dem Merge Commit:

13.3 Squash Merge

Beim Squash Merge werden alle Commits des Feature-Branches zu einem einzigen Commit zusammengefasst (squashed). Diese Methode wird oft verwendet, um eine aufgeräumte Historie zu erhalten, insbesondere wenn der Feature-Branch viele kleine oder experimentelle Commits enthält. Der Squash Merge führt die Arbeit eines Branches zu einem einzigen Commit zusammen, was die Historie übersichtlicher macht.

13.3.1 Vorteile

13.3.2 Nachteile

13.3.3 Beispiel-Diagramm

Vor dem Squash Merge:

Nach dem Squash Merge: