¿Puedo desactivar el avance rápido de forma predeterminada en Git?

Resuelto Jason Baker asked hace 14 años • 5 respuestas

Realmente nunca puedo pensar en un momento en el que usaría git mergeen lugar de git rebasey no quisiera que apareciera una confirmación. ¿Hay alguna forma de configurar Git para que tenga desactivado el avance rápido de forma predeterminada?

El hecho de que haya una --ffopción parece implicar que hay una manera, pero parece que no puedo encontrarla en la documentación.

Jason Baker avatar Mar 23 '10 20:03 Jason Baker
Aceptado

Parece que todavía hay una pregunta pendiente en el hilo: ¿Cómo hacerlo globalmente (es decir, para todas las ramas)? Para los registros, podemos utilizar lo siguiente:

git config --add merge.ff false

...para que se aplique a todas las sucursales en el repositorio actual. Para que se aplique a todas las ramas en todos los repositorios donde alguien no lo haya ejecutado sin la --globalopción (la configuración local anula la global), ejecute esto:

git config --global --add merge.ff false

De la documentación :

merge.ff
De forma predeterminada, git no crea una confirmación de fusión adicional cuando se fusiona una confirmación que es descendiente de la confirmación actual. En cambio, se avanza rápidamente la punta de la rama actual. Cuando se establece en falso, esta variable le dice a git que cree una confirmación de fusión adicional en tal caso (equivalente a dar la --no-ffopción desde la línea de comando). Cuando se establece en solo, solo se permiten fusiones de avance rápido (equivalente a dar la --ff-onlyopción desde la línea de comando).

Eric Platon avatar Jul 25 '2011 00:07 Eric Platon

Sí hay --no-ff. Puede configurar opciones de fusión por rama, por ejemplo

git config branch.master.mergeoptions  "--no-ff"

agrega lo siguiente a su $(REPO)/.git/configarchivo:

[branch "master"]
    mergeoptions = --no-ff

Nota al pie: hablando de mi experiencia, finalmente descubrí que desactivar el avance rápido era muy útil para los recién llegados a git; sin embargo, una vez que la sensación de los flujos de trabajo y los conceptos comienza a asimilarse, definitivamente querrás evitar que tu gráfico de registro se vuelva borroso con toneladas de elementos fusionados sin sentido. confirmaciones remotas de tipo ..blarf.

Nota al pie 2, una década después: las otras respuestas a continuación brindan opciones de configuración más modernas, pero en realidad, probablemente SÍ quieras permanecer con los valores predeterminados (es decir, avanzar rápidamente siempre que sea posible) en estos tiempos, porque las confirmaciones de fusión vacías en realidad solo hacer que la historia sea mucho más difícil de razonar.

conny avatar Mar 23 '2010 13:03 conny

Al leer el hilo de respuestas, terminé usando las dos opciones siguientes:

# Disallows non ff merges on pull. Overrides merge.ff when pulling
git config --global pull.ff only

# Even create extra merge commit when fast forward merge would be possible
git config --global merge.ff false

Solo en términos generales, también descubrí que esta configuración evita problemas durante la extracción:

# Set up pull to rebase instead of merge
git config --global pull.rebase true
bastian avatar Jan 23 '2018 18:01 bastian
git config --replace-all pull.ff false

El comando anterior funcionó para mí para eliminar la combinación de avance rápido de todas las ramas.

Shashwat avatar Aug 29 '2023 09:08 Shashwat