Advertencia: push.default no está configurado; su valor implícito está cambiando en Git 2.0

1624

He estado usando Git durante un tiempo y recientemente descargué una actualización solo para encontrar este mensaje de advertencia cuando lo intento push.

warning: push.default is unset; its implicit value is changing in 
Git 2.0 from 'matching' to 'simple'. To squelch this message 
and maintain the current behavior after the default changes, use: 

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use: 

  git config --global push.default simple

Obviamente puedo establecerlo en uno de los valores mencionados, pero ¿qué significan? ¿Cuál es la diferencia entre simpley matching?

Si lo cambio en un cliente, ¿tendré que hacer algo en otros clientes con los que comparto repositorios?

Marko
fuente
1
Nota: ¡git 2.8 (marzo de 2016) eliminará esa advertencia! Ver stackoverflow.com/a/22356644/6309
VonC

Respuestas:

2149

Se explica con gran detalle en los documentos , pero intentaré resumir:

  • matchingmedios git pushserán empujar todas sus ramas locales a los que tienen el mismo nombre en el mando a distancia. Esto facilita empujar accidentalmente una rama que no tenía intención de hacer.

  • simplemedios git pushserán empujar únicamente la rama actual a la que git pullse retiraría de , y también comprueba que sus nombres coinciden. Este es un comportamiento más intuitivo, por lo que el valor predeterminado se está cambiando a esto.

Esta configuración solo afecta el comportamiento de su cliente local y puede anularse especificando explícitamente qué ramas desea insertar en la línea de comando. Otros clientes pueden tener diferentes configuraciones, solo afecta lo que sucede cuando no especifica qué ramas desea impulsar .

hammar
fuente
16
Me alegra saber este cambio. Cuando era nuevo en git, accidentalmente empujé todas las sucursales locales pensando git pushque empujaría solo la rama actual.
rahul286
51
El motivo es que, empíricamente, la mayoría espera el nuevo comportamiento predeterminado
Blake Miller
125
Sería mucho mejor tener su resumen maravillosamente claro en el propio mensaje de advertencia, en lugar de las instrucciones que nos dicen que abramos la documentación y busquemos una cadena.
hertzsprung
116
"Se explica muy claramente en los documentos" Claro que si terminas en la página correcta, sin embargo, el manual para git push ni siquiera menciona la palabra simple , que probablemente es la razón por la que tanta gente terminó aquí. .
Gerry
36
El resumen de hammar es una explicación mucho más concisa que los documentos de git.
AJ.
19

Me doy cuenta de que esta es una publicación antigua, pero como me encontré con el mismo problema y tuve problemas para encontrar la respuesta, pensé que agregaría un poco.

Entonces la respuesta de @ hammar es correcta. El uso push.default simplees, de alguna manera, como configurar el seguimiento en sus ramas para que no necesite especificar controles remotos y ramas cuando empuja y tira. La matchingopción empujará todas las ramas a sus contrapartes correspondientes en el control remoto predeterminado (que es el primero que se configuró a menos que haya configurado su repositorio de otra manera).

Una cosa que espero que otros encuentren útil en el futuro es que estaba ejecutando Git 1.8 en OS X Mountain Lion y nunca vi este error. Actualizar a Mavericks es lo que de repente lo hizo aparecer (la ejecución git --versionmostrará git version 1.8.3.4 (Apple Git-47)lo que nunca había visto hasta la actualización del sistema operativo.

wgp
fuente
2
También comencé a ver esto después de actualizar a Mavericks. Así que supongo que Git se actualizó al mismo tiempo que Mavericks, como estás insinuando.
Según Lundberg el
8

Si recibe un mensaje de git quejándose del valor simpleen la configuración, verifique su git version.

Después de la actualización XCode(en Macejecución Mountain Lion), que también se actualizó gitde 1.7.4.4 a 1.8.3.4 , los shells comenzaron antes de que la actualización aún ejecutara git 1.7.4.4 y se quejaron del valor simplede push.default en la configuración global.

¡La solución fue cerrar los shells con la versión anterior gity usar la nueva versión!

Tom Barron
fuente
13
Estoy usando una nueva instalación de Xcode (git es la versión 1.8.5.2) y seguía teniendo este error hasta que ejecuté:git config --global push.default simple
Sam-Graham
2

Me preguntaba por qué recibía ese gran mensaje de advertencia en Ubuntu 16.04 (que viene con Git 2.7.4), pero no en Arch Linux. La razón es que la advertencia se eliminó en Git 2.8 (marzo de 2016):

Durante la transición en torno a Git versión 2.0, el usuario solía recibir una advertencia bastante fuerte cuando ejecutaba "git push" sin establecer la variable de configuración push.default. Ya no advertimos porque la transición se completó hace mucho tiempo.

Por lo tanto, no verá la advertencia si tiene Git 2.8 y versiones posteriores y no necesita configurarlo a push.defaultmenos que desee cambiar el 'simple'comportamiento predeterminado .

Eugene Yarmash
fuente