Comportamiento predeterminado de "git push" sin una rama especificada
Utilizo el siguiente comando para enviar a mi rama remota:
git push origin sandbox
Si yo digo
git push origin
¿Eso también impulsa cambios en mis otras ramas o solo actualiza mi rama actual? Tengo tres ramas master
: production
y sandbox
.
La git push
documentación no es muy clara al respecto, por lo que me gustaría aclararlo definitivamente.
git push
¿Qué ramas y controles remotos actualizan exactamente los siguientes comandos?
git push
git push origin
origin
arriba hay un control remoto.
Entiendo que eso git push [remote] [branch]
enviará solo esa rama al control remoto.
Puede controlar el comportamiento predeterminado configurando push.default en su configuración de git. De la documentación de git-config(1) :
push.default
Define la acción que debe realizar git push si no se proporciona ninguna especificación de referencia en la línea de comando, no se configura ninguna especificación de referencia en el control remoto y ninguna de las opciones proporcionadas en la línea de comando implica ninguna especificación de referencia. Los valores posibles son:
nothing
: no empujes nadamatching
: (predeterminado antes de Git 2.0) empuja todas las ramas coincidentesSe considera que todas las ramas que tienen el mismo nombre en ambos extremos coinciden.
upstream
: empuja la rama actual a su rama ascendente (tracking
es un sinónimo obsoleto de ascendente)current
: empuja la rama actual a una rama del mismo nombresimple
: (nuevo en Git 1.7.11, predeterminado desde Git 2.0) como upstream, pero se niega a enviar si el nombre de la rama upstream es diferente del localEsta es la opción más segura y adecuada para principiantes.
Los modos simple, actual y ascendente son para aquellos que desean expulsar una sola rama después de terminar el trabajo, incluso cuando las otras ramas aún no están listas para ser expulsadas.
Ejemplos de línea de comando:
Para ver la configuración actual:
git config push.default
Para establecer una nueva configuración:
git config push.default current
Puedes configurar el comportamiento predeterminado para tu git con push.default
git config push.default current
o si tienes muchos repositorios y quieres lo mismo para todos entonces
git config --global push.default current
La corriente en esta configuración significa que, de forma predeterminada, solo empujarás la rama actual cuando hagas git push.
Otras opciones son:
- nada: no empujes nada
- coincidencia: empuja todas las ramas coincidentes (predeterminado)
- seguimiento: empuja la rama actual a lo que esté rastreando
- actual: empuja la rama actual
ACTUALIZACIÓN - NUEVA FORMA DE HACER ESTO
A partir de Git 1.7.11 haga lo siguiente:
git config --global push.default simple
Esta es una nueva configuración introducida que funciona de la misma manera que la actual y, según los rumores, se establecerá como predeterminada en git desde la versión 2.0.