2015-02-20 8 views

Antwort

3

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‘.

+0

Danke für den Tipp, aber es sieht aus wie 'merge.ff' hat Vorrang. – oyvind

+0

@oyvind das ist, was ich fürchtete ... – VonC

+0

@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'. –

3

Hier ist mein vorläufiger Workflow (Beachten Sie, dass die Konfigurationsoption pull.ff nur auf Git 2.x funktioniert).

verwenden config:

  • merge.fffalse zu setzen. Dies setzt das Verhalten merge auf --no-ff.
  • Set pull.ff bis only. Dies setzt das Verhalten pull 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.

+0

Gut entdeckt. +1. Ich habe meine eigene Antwort entsprechend geändert. – VonC