Comportamiento predeterminado de "git push" sin una rama especificada

Resuelto Debajit asked hace 15 años • 12 respuestas

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: productiony sandbox.

La git pushdocumentació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

originarriba hay un control remoto.

Entiendo que eso git push [remote] [branch]enviará solo esa rama al control remoto.

Debajit avatar Jun 04 '09 09:06 Debajit
Aceptado

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 nada

  • matching: (predeterminado antes de Git 2.0) empuja todas las ramas coincidentes

    Se considera que todas las ramas que tienen el mismo nombre en ambos extremos coinciden.

  • upstream: empuja la rama actual a su rama ascendente ( trackinges un sinónimo obsoleto de ascendente)

  • current: empuja la rama actual a una rama del mismo nombre

  • simple: (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 local

    Esta 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
UncleZeiv avatar Jun 04 '2009 03:06 UncleZeiv

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.

Christoffer avatar Oct 06 '2011 10:10 Christoffer