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 -