2013-05-09 10 views
19

Dal git book:Come impostare no "avanti veloce", come impostazione predefinita quando si utilizza git merge

Noterete la frase "Avanti veloce" in quella unione. Poiché il commit a cui punta il ramo in cui ti sei fuso era direttamente a monte del commit su cui ti trovi, Git sposta il puntatore in avanti. Per dirlo in un altro modo, quando provi a unire un commit con un commit che può essere raggiunto seguendo la cronologia del primo commit, Git semplifica le cose spostando il puntatore in avanti perché non c'è lavoro divergente da unire - questo è chiamato un " avanti veloce".

Tuttavia, l'effetto collaterale di questo "avanzamento rapido" è che se si dispone di un ramo di funzionalità con più commit, si perderà il contesto storico della funzionalità quando si unirà di nuovo in master. In altre parole, i commit non saranno raggruppati come parte di questa funzione.

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

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

Il modo manuale è di git merge --no-ff

Qualcuno sa come impostare questo come un difetto?

risposta

35

impostare la variabile di configurazione merge.ff-false:

git config --global merge.ff false 

(Senza --global per limitare l'effetto al progetto corrente)

+0

link alle relative documentazione Git: http://git-scm.com/docs/git-config. –

+4

ma tenete presente che 'git pull' (senza --rebase) sta facendo un'unione e quindi creerà un commit merge (solitamente indesiderato). – michas

+0

Stranamente, quando "mi unisco mybranch" non avanza velocemente, anche se uno è possibile. Quando uso l'opzione --ff, avanza velocemente. Ciò che è strano è che merge.ff non sembra essere disattivato a nessun livello, quindi --no-ff sembra essere il comportamento predefinito per me. Ma --ff dovrebbe essere il default: https://git-scm.com/docs/git-merge#git-merge---ff. Qualcuno ha qualche indizio? – Sean

Problemi correlati