Zusammenführen von Branches ohne Fast Forward in Git

Azhar Bashir Khan 6 Februar 2022
Zusammenführen von Branches ohne Fast Forward in Git

In diesem Tutorial geht es um das Zusammenführen von Branches ohne schnellen Vorlauf in Git.

Wir verwenden Git, um in einer kollaborativen Entwicklungsumgebung zu arbeiten. Wir erstellen viele Zweige für verschiedene Zwecke und führen diese Zweige schließlich mit dem Hauptzweig zusammen, um einen Release-Build bereitzustellen.

Wir führen Branches in Git mit Fast Forward oder ohne Fast Forward zusammen.

Wir werden dies nun an einem Beispiel veranschaulichen.

Verwenden des Befehls git merge mit und ohne Option --no-ff (No Fast Forward) in Git

In einer kollaborativen Entwicklungsumgebung haben wir oft mehrere Zweige in Git erstellt, um verschiedenen Zwecken zu dienen. Wir führen diese Zweige schließlich mit dem Hauptzweig zusammen, um einen Release-Build bereitzustellen.

Manchmal ist der HEAD-Commit unseres Hauptzweigs ein Vorfahre des Commits des Zweigs, den wir zusammenzuführen versuchen. In solchen Fällen erfolgt die Zusammenführung im Schnellvorlauf.

Eine schnelle Vorwärtszusammenführung kann auftreten, wenn ein linearer Pfad von der aktuellen Zweigspitze zum Zielzweig führt. Angenommen, wir haben den Branch feature1 und wir führen ihn mit main, unserem Mainline-Branch, zusammen.

Nehmen wir nun an, der Commit HEAD des Zweigs main ist ein Vorfahre des Commits des Zweigs feature1, den wir zusammenführen möchten.

In solchen Fällen muss Git, anstatt die Branches zusammenzuführen, alles, was Git tun muss, um die Historien zu integrieren, verschieben (d. h. schnell vorspulen) die aktuelle Branch-Spitze bis zur Ziel-Branch-Spitze.

In unserem Fall wird also beim Schnellvorlauf der aktuelle HEAD des main-Zweigs nach oben zur feature1-Zweigspitze verschoben.

Nachfolgend sehen Sie eine Darstellung der Situation der Branches main und feature1 vor der Zusammenführung.

              E---F---G feature1
             /
A---B---C---D main

Daher wird ein schneller Vorlauf stattfinden, wenn wir die beiden Zweige mit dem Befehl git merge zusammenführen.

Um eine Zusammenführung durchzuführen, führen wir den Befehl do wie folgt aus.

$ git merge feature1

Nach Ausführung des Befehls wird der main-Zweig schnell vorgespult.

Bitte sehen Sie sich die Abbildung des Schnellvorlaufs unten an.

              E---F---G feature1, main
             /
A---B---C---D

Somit wird jetzt der main-Zweigstrom HEAD schnell weitergeleitet. In diesem Fall wird kein Merge-Commit erstellt.

Manchmal möchten wir vielleicht eine tatsächliche Zusammenführung anstelle eines schnellen Vorlaufs durchführen. Angenommen, wir möchten die Zweigtopologie beibehalten.

In einem solchen Fall können wir den Befehl git merge mit der Option --no-ff verwenden.

Die Befehlsoption --no-ff bewirkt, dass in allen Fällen ein Merge-Commit erstellt wird, auch wenn das Merge stattdessen als schneller Vorlauf aufgelöst werden könnte.

Um also in unserem Fall eine Zusammenführung ohne schnellen Vorlauf durchzuführen, müssen wir wie folgt vorgehen.

$ git merge --no-ff feature1

Somit fügt nun der Befehl git merge den Branch feaure1 in den Branch main ein und erzeugt einen Merge-Commit (auch wenn es ein Fast-Forward-Merge war).

Dies ist nützlich, um alle Zusammenführungen zu dokumentieren, die in Ihrem Repository auftreten.

Daher haben wir ausgearbeitet, wie die Branches ohne schnellen Vorlauf in Git zusammengeführt werden können.

Für weitere Informationen, besuchen Sie bitte -

  1. Git Merge
  2. git-merge

Verwandter Artikel - Git Merge