Mit Git Merge können wir einen schnellen Vorlauf und kein schnelles Zusammenführen von Zweigen durchführen. Irgendwelche Ideen, wann die Schnellvorlaufzusammenführung verwendet werden soll und wann keine Schnellvorlaufzusammenführung verwendet werden soll?
247
Antworten:
Die
--no-ff
Option ist nützlich , wenn Sie eine klare Vorstellung von Feature - Zweig haben wollen. Selbst wenn in der Zwischenzeit keine Festschreibungen vorgenommen wurden, ist FF möglich. Manchmal möchten Sie dennoch, dass jede Festschreibung in der Hauptzeile einer Funktion entspricht. Sie behandeln also einen Feature-Zweig mit einer Reihe von Commits als eine Einheit und führen sie als eine Einheit zusammen. Aus Ihrem Verlauf geht hervor, wann Sie einen Feature-Zweig zusammenführen--no-ff
.Wenn Sie sich nicht für so etwas interessieren, könnten Sie wahrscheinlich mit FF davonkommen, wann immer es möglich ist. Auf diese Weise haben Sie ein besseres Gefühl für den Workflow.
Zum Beispiel ist der Autor dieses Artikels der Ansicht, dass die
--no-ff
Option Standard sein sollte, und seine Argumentation entspricht in etwa der oben beschriebenen:Stellen Sie sich die Situation vor, in der eine Reihe kleinerer Commits im Zweig "Feature" zusammen ein neues Feature bilden: Wenn Sie nur "git merge feature_branch" ohne
--no-ff
" ausführen , ist aus dem Git-Verlauf nicht ersichtlich , welche Commit-Objekte zusammen vorhanden sind Implementierung einer Funktion - Sie müssten alle Protokollnachrichten manuell lesen. Das Zurücksetzen einer gesamten Funktion (dh einer Gruppe von Commits) ist ein echtes Problem [wenn--no-ff
es nicht verwendet wird], wohingegen dies leicht möglich ist, wenn das--no-ff
Flag verwendet wurde [weil es ist nur ein Commit]. "quelle
--no-ff
Ihres Commit-Verlaufs möglicherweise nicht sofort ersichtlich sind, wenn Sie grundlegende Tools wie verwendengit log
, mit denen weiterhin alle Commits aus allen Zweigen angezeigt werden , die in Ihrem aktuellen Zweig zusammengeführt wurden. Die Vorteile werden jedoch deutlicher, wenn z. B.git log --first-parent
in einem Integrationszweig wiedevelop
oder verwendet wirdmaster
. Wenn Sie religiös verwenden--no-ff
, werden ausschließlich Zusammenführungsanforderungen angezeigt, währendgit log
dennoch ein (umfassenderer) Verlauf angezeigt wird. Deshalb empfiehlt Vincent es für die Verwendung mit GitFlow .Ich kann ein Beispiel geben, das häufig im Projekt zu sehen ist.
Hier erstellt die Option
--no-ff
(dh echte Zusammenführung ) ein neues Commit mit mehreren übergeordneten Elementen und bietet eine bessere Verlaufsverfolgung. Andernfalls ist--ff
(dh Schnellvorlaufzusammenführung ) standardmäßig aktiviert.(*) Beachten Sie, dass
newFeature
git hier eine--no-ff
Zusammenführung durchführen muss , wenn der Zweig wiederverwendet wird, anstatt einen neuen Zweig zu erstellen . Dies bedeutet, dass eine schnelle Vorwärtszusammenführung nicht immer zulässig ist.quelle
Wenn wir an einer Entwicklungsumgebung arbeiten und unseren Code mit dem Staging- / Produktionszweig zusammenführen, kann Git kein schneller Vorlauf eine bessere Option sein. Wenn wir in der Entwicklungsabteilung für ein einzelnes Feature arbeiten, haben wir normalerweise mehrere Commits. Das Verfolgen von Änderungen mit mehreren Commits kann später unpraktisch sein. Wenn wir mit dem Staging- / Produktionszweig über Git keinen schnellen Vorlauf zusammenführen, hat er nur 1 Commit. Wenn Sie die Funktion jetzt zurücksetzen möchten, setzen Sie das Commit einfach zurück. Das Leben ist einfach.
quelle
Es ist auch möglich, dass Sie personalisierte Feature-Zweige haben möchten, in denen der Code erst am Ende des Tages platziert wird. Dies ermöglicht es, die Entwicklung detaillierter zu verfolgen.
Ich möchte die Master-Entwicklung nicht mit nicht funktionierendem Code verschmutzen, daher ist --no-ff möglicherweise genau das, wonach man sucht.
Nebenbei bemerkt, es ist möglicherweise nicht erforderlich, Arbeitscode für einen personalisierten Zweig festzuschreiben, da der Verlauf neu geschrieben
git rebase -i
und auf dem Server erzwungen werden kann, solange niemand anderes an demselben Zweig arbeitet.quelle