¿Cómo hago para que el valor predeterminado de git merge sea --no-ff --no-commit?

84

La política de la empresa es utilizar --no-ffpara las confirmaciones de fusión. Personalmente, me gusta ajustar los mensajes de registro de combinación, por lo que uso --no-commit. Además, me gusta compilar y probar antes de dejar ir la confirmación.

¿Cómo hago --no-ffy --no-commitel predeterminado para mí para todas las ramas?

(y he aprendido en los años desde que pregunté esto, casi siempre estoy contento con la confirmación, por lo que es más simple permitir que se confirme de forma predeterminada y siempre que modifique o arregle las cosas antes de hacer un empujón, las cosas son todo bien...)

Rayas
fuente
relacionado con más antiguo: stackoverflow.com/questions/2500296/…
cregox

Respuestas:

112

Pon esto en $ HOME / .gitconfig:

[merge]
    ff = no
    commit = no

Puedes usar git-config para hacer esto:

  git config --global merge.commit no
  git config --global merge.ff no
William Pursell
fuente
1
¿Estás seguro de que esto funciona? No es para mí, tuve que usar uno branch.master.mergeoptions="--no-ff"o merge.ff="no"(ver la respuesta a continuación)
gaizka
@gaizka De hecho, en 1.7.2 y en 1.7.7.2 no funciona. Intentaré conseguir algo de tiempo más tarde para comprobar las versiones anteriores.
William Pursell
@Stripes usando el comando git config, lo coloca en [merge], no en [core]
Tisch
41

Para hacer --no-ff --no-commitel comportamiento de fusión predeterminado, configure las opciones para nousar:

git config --global merge.ff no
git config --global merge.commit no

Sin embargo, el problema con esto es que git pull= git fetch+ git merge. Por lo tanto, cada vez que extraiga del servidor remoto, estaría creando una fea confirmación de fusión cuando se justificaría un avance rápido simple. Para resolver esto, establezca pull.ffen yes:

git config --global pull.ff yes
Jian
fuente
17
Si bien esto es cierto cuando se usan mergeoptions, debe tenerse en cuenta que si está usando en su merge.fflugar, entonces no hace esto, solo afecta a las combinaciones explícitas, mientras que las extracciones aún hacen el avance rápido deseado.
Nick
3
Cuando lo uso merge.ff = no, git pullcrea confirmaciones de fusión.
Matt McClure
3
para resolver esto, debe usar git pull --rebase( git-scm.com/docs/git-pull ) o configurar branch.autosetuprebase( git-scm.com/docs/git-config.html )
Cybot
8
o usepull.ff = yes
gabeio
20

A partir de la versión 1.7.6 de git, debes usar

git config [--global] merge.ff no

para "forzar" el uso --no-ffen cada combinación.

El comportamiento predeterminado es

git config [--global] merge.ff yes

Y con

git config [--global] merge.ff only

rechazará las fusiones que no sean de avance rápido

Gaizka
fuente
11

De acuerdo con el manual , debe usar

$ git config [--global] merge.ff false

para establecer la opción sin avance rápido por defecto para todas las ramas con la utilidad git-config.

alexglue
fuente