2012-07-31 17 views
107

Recentemente, in seguito a qualsiasi git pull, git ha avviato lo spawning del mio editor di testo e richiede un messaggio di unione di commit. Un messaggio di commit è già precompilato e devo solo salvare e chiudere la finestra per completare il pull.Perché git mi chiede un messaggio di conferma di unione post-pull?

In passato, avrebbe eseguito l'unione in modo invisibile, con un messaggio di commit standard (lungo le linee Merge branch 'dev' of remote.com:/repo into dev).

Ho aggiornato di recente git alla versione 1.7.11.3 (tramite homebrew), ma non riesco a pensare ad altro che avrei potuto fare per modificare questo comportamento. Si tratta di un'ambientazione, o c'è altrimenti un modo per tornare al modo in cui era?

risposta

122

Nella versione 1.7.10, gli sviluppatori di git hanno deciso di unire i commit potrebbero essere fatti troppo facilmente. Come spiegato in this blog post,, forzare il comportamento del messaggio di commit interattivo dovrebbe rendere tali messaggi di commit più dettagliati e potrebbe ridurre la frequenza complessiva di fusioni non necessarie.

È possibile utilizzare il flag --no-edit per evitare questo comportamento, ma, beh, no. Unisci commit, come qualsiasi commit alla storia, dovrebbe essere ben costruito. La tua storia dovrebbe essere nient'altro che utile.

+0

Grande, grazie per questa informazione. – shanebonham

+40

Grazie per l'aiuto. Non sono d'accordo sul fatto che la fusione dei commit dovrebbe essere sempre descrittiva. Il motivo per cui ho cercato questo è perché le unioni automatiche ogni volta che tiro mi chiedono di spiegare perché è necessaria l'unione, che diventa rapidamente irragionevole poiché lo fa anche quando non ho alcuna modifica. – Brian

+8

Questa è anche una risorsa utile per evitare questo comportamento: http://longair.net/blog/2009/04/16/git-fetch-and-merge/ Dovresti evitare 'git pull'; usa 'git merge --ff-only' se stai solo cercando di aggiornare e non pensi di avere cambiamenti locali; usa 'git merge --no-ff' se stai effettivamente cercando di unire un ramo. – Glyph

40

Per creare un collegamento per un utilizzo futuro, sia: -

Modificare il ~/.gitconfig con il seguente:

[core] 
    mergeoptions = --no-edit 

o eseguire il seguente nel terminale

git config --global core.mergeoptions --no-edit

+12

Questo non ha funzionato per me (git su OSX), e l'ho impostato correttamente, osservando l'output di 'git config --global core.mergeoptions'. – jvannistelrooy

+3

Non funziona anche per me –

4

In primo luogo, presta attenzione agli avvertimenti nella risposta di Christopher sopra.

Poi, se si vuole ancora disabilitare fusione automatica commettere modifica dei messaggi, impostare questa variabile d'ambiente:

GIT_MERGE_AUTOEDIT = no 

Questa variabile di ambiente e il suo "no" impostazione sono documentate nella pagina git merge doc. Si consiglia di utilizzarlo solo negli script che devono unirsi in modo non interattivo, ma ovviamente può essere impostato come parte dell'ambiente della shell per rendere i suoi effetti più permanenti.

Problemi correlati