Utilizo el siguiente comando para empujar a mi rama remota:
git push origin sandbox
Si yo digo
git push origin
¿Eso empuja los cambios en mis otras ramas también, 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 aclarar esto para siempre.
¿Qué ramas y controles remotos git push
actualizan exactamente los siguientes comandos?
git push
git push origin
origin
arriba es un control remoto.
Entiendo que git push [remote] [branch]
solo empujará esa rama al control remoto.
git
branch
git-branch
git-push
Martillo de peste
fuente
fuente
git push
, que podría ser de interésRespuestas:
Puede controlar el comportamiento predeterminado configurando push.default en su configuración de git. De la documentación de git-config (1) :
Define la acción que debe llevar a cabo git push si no se proporciona ninguna especificación de referencia en la línea de comando, no se configura ninguna especificación en el control remoto y ninguna de las opciones dadas en la línea de comando implica ninguna especificación de referencia. Los valores posibles son:
nothing
: no empujes nadamatching
: empuje todas las ramas coincidentesTodas las ramas que tienen el mismo nombre en ambos extremos se consideran coincidentes.
Esto solía ser el valor predeterminado, pero no desde Git 2.0 (
simple
es el nuevo valor predeterminado).upstream
: empuja la rama actual a su rama ascendente (tracking
es un sinónimo desaprobado para ascendente)current
: empuja la rama actual a una rama del mismo nombresimple
: (nuevo en Git 1.7.11) como ascendente, pero se niega a presionar si el nombre de la rama ascendente es diferente del localEsta es la opción más segura y es adecuada para principiantes.
Este modo se ha convertido en el predeterminado en Git 2.0.
Ejemplos de línea de comando:
Para ver la configuración actual:
Para establecer una nueva configuración:
fuente
simple
modo. Este modo está destinado a convertirse en el predeterminado en el futuro.simple
funciona comoupstream
, pero comocurrent
requiere que los nombres de las ramas sean iguales en ambos extremos.simple
comportamiento ahora es el predeterminado.Puede configurar el comportamiento predeterminado para su git con push.default
o si tiene muchos repositorios y quiere lo mismo para todos, entonces
La corriente en esta configuración significa que, de forma predeterminada, solo empujará la rama actual cuando haga git push
Otras opciones son:
ACTUALIZACIÓN - NUEVA MANERA DE HACER ESTO
A partir de Git 1.7.11 haga lo siguiente:
Esta es una nueva configuración introducida que funciona de la misma manera que la actual, y se establecerá por defecto en git desde v 2.0 según los rumores.
fuente
git push origin
empujará todos los cambios en las ramas locales que tienen ramas remotas coincidentes enorigin
As forgit push
De la sección de ejemplos de la
git-push
página del manualfuente
Acabo de enviar mi código a una rama y lo envié a github, así:
fuente
Aquí hay una información muy útil y útil sobre Git Push : Git Push: Just the Tip
El uso más común de git push es enviar los cambios locales a su repositorio público ascendente. Suponiendo que el flujo ascendente es un remoto llamado "origen" (el nombre remoto predeterminado si su repositorio es un clon) y la rama a actualizar desde / se llama "maestro" (el nombre de rama predeterminado), esto se hace con:
git push origin master
git push origin
empujará los cambios de todas las ramas locales a las ramas correspondientes del origen remoto.git push origin master
empujará los cambios de la rama maestra local a la rama maestra remota.git push origin master:staging
empujará los cambios desde la rama maestra local a la rama de preparación remota si existe.fuente
git push origin branch_name
por alguna razón, empuje no solo labranch_name
rama, sino también otras ramas locales (git versión 1.9.1).git push origin master:staging
es una joya escondida increíble!(Marzo de 2012)
Cuidado: la "
matching
" política predeterminada puede cambiar pronto(a veces después de git1.7.10 +) :
Consulte " Discuta: ¿qué debe hacer" git push "cuando no dice qué presionar? "
http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694
fuente
Acabo de poner esto en mi sección de alias .gitconfig y me encanta cómo funciona:
Empujará la rama actual al origen con
git pub
u otro repositorio congit pub repo-name
. Sabroso.fuente
git push -u --repo="origin" $1;
lugar. Funciona bastante bien, excepto que si empuja a otro repositorio, el nombre de la rama será el nombre utilizado por el otro repositorio, no el que está empujandoPuede empujar la rama actual con el comando
(tomado de aquí )
fuente
Un git push intentará empujar todas las ramas locales al servidor remoto, esto es probablemente lo que no desea. Tengo un par de comodidades configuradas para lidiar con esto:
Alias "gpull" y "gpush" apropiadamente:
En mi ~ / .bash_profile
Por lo tanto, ejecutar "gpush" o "gpull" empujará solo mi rama "actualmente en".
fuente
Puede cambiar ese comportamiento predeterminado en su
.gitconfig
, por ejemplo:Para verificar la configuración actual, ejecute:
fuente
En lugar de usar alias, prefiero crear scripts git-XXX para poder controlarlos más fácilmente (todos nuestros desarrolladores tienen un cierto directorio controlado por fuente en su camino para este tipo de cosas).
Este script (llamado
git-setpush
) establecerá el valor de configuración para elremote.origin.push
valor en algo que solo empujará la rama actual:tenga en cuenta que, como estamos usando
Gerrit
, establece el objetivorefs/for/XXX
para empujar a una rama de revisión. También asume que el origen es su nombre remoto.Invocarlo después de verificar una sucursal con
Obviamente, podría adaptarse para hacer el pago, pero me gustan los scripts para hacer una cosa y hacerlo bien
fuente
feature/fix_fubar
apuntan a ramas ascendentes más genéricas comomaster
odevelop
, por lo que esto apuntaría a la secuencia ascendente incorrecta. ¿Cómo se ve su flujo local para repos controlados por gerrit?git config remote.origin.push HEAD:refs/for/master
.He agregado las siguientes funciones en mi archivo .bashrc para automatizar estas tareas. Hace git push / git pull + nombre de la rama actual.
fuente