2012-07-31 25 views
107

Recientemente, después de cualquier git pull, git ha comenzado a generar mi editor de texto y me pide un mensaje de confirmación de fusión. Un mensaje de confirmación ya está prellenado, y solo tengo que guardar y cerrar la ventana para completar la extracción.¿Por qué git me está pidiendo un mensaje de confirmación de fusión posterior a la extracción?

En el pasado, hacía la fusión silenciosamente, con un mensaje de confirmación estándar (a lo largo de las líneas de Merge branch 'dev' of remote.com:/repo into dev).

Recientemente actualicé git a la versión 1.7.11.3 (a través de homebrew), pero no puedo pensar en otra cosa que podría haber hecho para cambiar este comportamiento. ¿Es esto un ajuste, o hay alguna manera de volver a la forma en que estaba?

Respuesta

122

En git 1.7.10, los desarrolladores de git decidieron que los commits de fusión podrían realizarse con demasiada facilidad. Como se explica en this blog post,, forzar el comportamiento del mensaje de compromiso interactivo debe hacer que los mensajes de compromiso sean más detallados y podría reducir la frecuencia general de fusiones innecesarias.

Puede utilizar el indicador --no-edit para evitar este comportamiento, pero, bueno, no. Merge commits, al igual que cualquier commit de la historia, debe estar bien construido. Tu historia no debe ser más que útil.

+0

Genial, gracias por esa información. – shanebonham

+40

Gracias por la ayuda. No estoy de acuerdo con que las asignaciones de fusión siempre sean descriptivas. La razón por la que busqué esto es porque las fusiones automáticas cada vez que lo hago me piden que explique por qué es necesaria la fusión, lo que rápidamente se vuelve irracional ya que incluso hace eso cuando no tengo ningún cambio. – Brian

+8

Esto también es un recurso útil para evitar este comportamiento: http://longair.net/blog/2009/04/16/git-fetch-and-merge/ Deberías evitar 'git pull'; use 'git merge --ff-only' si solo está tratando de actualizar y no cree que tenga ningún cambio local; use 'git merge --no-ff' si realmente está tratando de fusionar una rama. – Glyph

40

Para crear un acceso directo para un uso futuro, ya sea: -

Editar su ~/.gitconfig con lo siguiente:

[core] 
    mergeoptions = --no-edit 

o ejecutar el siguiente en el terminal

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

+12

Esto no funcionó para mí (git en OSX), y lo configuré correctamente, mirando la salida de 'git config --global core.mergeoptions'. – jvannistelrooy

+3

No funciona para mí también –

4

En primer lugar, preste atención a las advertencias en la respuesta de Christopher arriba.

Entonces, si aún desea desactivar fusión automática cometer edición de mensajes, establezca esta variable de entorno:

GIT_MERGE_AUTOEDIT = no 

Esta variable de entorno y su entorno "no" están documentados en la página git merge doc. Se recomienda utilizarlo solo en scripts que deben fusionarse de forma no interactiva, pero, por supuesto, se puede configurar como parte de su entorno de shell para que sus efectos sean más permanentes.

Cuestiones relacionadas