Ich möchte git immer machen merge begeht (--no-ff
), wenn ich git merge
verwenden, aber halten Sie das Standardverhalten (--ff
) für git pull
. Ist das möglich (mit Configs)?vorspulen Verschmelzung für die regelmäßige Zusammenführung, aber nicht für Pull
Antwort
Die beiden configs, die helfen könnten, sind:
merge.ff
(Von git merge
man page): Wenn auf false
gesetzt, diese Variable sagt Git eine zusätzliche merge commit in einem solchen Fall (äquivalent zu geben die --no-ff
Option erstellen von der Befehlszeile).
pull.ff
(vom git config
man page)
Einstellung pull.ff
auf true
würde das Standardverhalten halten, wo Git nicht eine zusätzliche merge commit nicht erstellen, wenn ein, dass begehen Verschmelzung ist ein Nachkomme des aktuellen begehen.
Zu testen: Hat pull.ff
Vorrang vor merge.ff
?
git config pull.ff only
git config merge.ff false
Wie bereits erwähnt durch Kelvin 's answer und durch git-pull.sh
bestätigt,' only
'ist der Wert zu verwenden, nicht' true
‘.
Hier ist mein vorläufiger Workflow (Beachten Sie, dass die Konfigurationsoption pull.ff
nur auf Git 2.x funktioniert).
verwenden config:
merge.ff
false
zu setzen. Dies setzt das Verhaltenmerge
auf--no-ff
.- Set
pull.ff
bisonly
. Dies setzt das Verhaltenpull
standardmäßig auf--ff-only
.
Das heißt, wenn Sie pull
versuchen, eine Niederlassung, wo Ihre lokale beide hinter & ist vor der Fernbedienung wird die pull
scheitern. Machen Sie in diesem Fall einen rebase
, damit Sie nicht mehr hinterherhinken.
Hinweis:
Ich versuchte pull.ff
zu true
Einstellung aber git scheint es, als zu behandeln, wenn die Option vollständig nicht gesetzt ist. Beachten Sie, dass in der Manpage nicht erwähnt wird, dass true
ein erkannter Wert ist.
Gut entdeckt. +1. Ich habe meine eigene Antwort entsprechend geändert. – VonC
Danke für den Tipp, aber es sieht aus wie 'merge.ff' hat Vorrang. – oyvind
@oyvind das ist, was ich fürchtete ... – VonC
@oyvind Sie könnten das Problem umgehen, indem Sie einen Alias anstelle eines "blanken" 'git pull' verwenden, der auf' git pull --ff' zeigt. Aber bitte nenne es nicht 'git puff'. –