So legen Sie bei Verwendung von git merge keinen “schnellen Vorlauf” als Standard fest

Lesezeit: 2 Minuten

Von dem Git-Buch:

Sie werden den Ausdruck „Fast forward“ in dieser Zusammenführung bemerken. Da der Commit, auf den der Branch, auf den Sie gemergt haben, zeigt, direkt vor dem Commit lag, auf dem Sie sich gerade befinden, bewegt Git den Zeiger nach vorne. Anders ausgedrückt: Wenn Sie versuchen, einen Commit mit einem Commit zusammenzuführen, der durch Verfolgen des Verlaufs des ersten Commits erreicht werden kann, vereinfacht Git die Dinge, indem es den Zeiger nach vorne bewegt, da es keine divergierende Arbeit zum Zusammenführen gibt – dies wird als ” schneller Vorlauf”.

Der Nebeneffekt dieses “Schnellvorlaufs” ist jedoch, dass Sie bei einem Feature-Branch mit mehreren Commits den historischen Kontext des Features verlieren, wenn Sie es wieder in den Master zusammenführen. Mit anderen Worten, die Commits werden nicht als Teil dieser Funktion gruppiert.

with fast forward:     x---x---x---x---x---x---x

without fast forward:  x---x---x         x---x---x---x
                                \x--x--x/

Der manuelle Weg ist zu git merge --no-ff

Weiß jemand wie man das als Standard setzt?

Legen Sie die Konfigurationsvariable fest merge.ff zu false:

git config --global merge.ff false

(Ohne --global um den Effekt auf das aktuelle Projekt zu beschränken)

  • aber sei dir dessen bewusst git pull (ohne –rebase) führt eine Zusammenführung durch und erstellt daher einen (normalerweise unerwünschten) Zusammenführungs-Commit.

    – Michael

    9. Mai 2013 um 8:50 Uhr

  • Seltsamerweise, wenn ich “git merge mybranch” ausführe, wird nicht schnell vorgespult, obwohl dies möglich ist. Wenn ich die Option –ff verwende, wird schnell vorgespult. Seltsam ist, dass merge.ff auf keiner Ebene ausgeschaltet zu sein scheint, also scheint –no-ff das Standardverhalten für mich zu sein. Aber –ff soll der Standard sein: git-scm.com/docs/git-merge#git-merge—ff . Hat jemand Hinweise?

    – Sean

    27. April 2017 um 20:49 Uhr

  • @michas gibt es eine Lösung, um es nur für Zusammenführungen, aber nicht für einen Git-Pull anzuwenden?

    – WegderZukunft

    9. September 2017 um 16:49 Uhr


Benutzer-Avatar
Christo Antow

Für alle, die den schnellen Vorlauf bei Pull beibehalten möchten – Sie können die merge.ff-Konfiguration für die Pulls mit der pull.ff-Konfiguration überschreiben

git config --global pull.ff true

Mehr Infos hier:
https://git-scm.com/docs/git-config#Documentation/git-config.txt-pullff

  • Ich denke, um die Option ff beim Ziehen zu behalten, sollte sie in der Konfigurationsdatei TRUE sein.

    – maniek099

    24. Juni 2020 um 9:25 Uhr

1226630cookie-checkSo legen Sie bei Verwendung von git merge keinen “schnellen Vorlauf” als Standard fest

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy