¿Qué hace '--set-upstream'?

327

¿Qué hace git --set-upstream?

Traté de entenderlo leyendo el manual de git , pero no lo entendí.

Евгений Масленков
fuente
13
Hay una nueva opción --set-upstream-toque se introdujo debido a las confusiones (IIRC) en la configuración aguas arriba.
Philip Oakley

Respuestas:

411
git branch --set-upstream <remote-branch>

establece la rama remota predeterminada para la rama local actual.

Cualquier git pullcomando futuro (con la rama local actual desprotegida)
intentará introducir los compromisos de la <remote-branch>rama local actual.


Una forma de evitar tener que escribir explícitamente --set-upstreames usar su indicador abreviado de la -usiguiente manera:

git push -u origin local-branch

Esto establece la asociación ascendente para cualquier intento futuro de empujar / tirar automáticamente.
Para obtener más detalles, consulte esta explicación detallada sobre las sucursales y el seguimiento en sentido ascendente .


Para evitar confusiones, las versiones recientes de gitdesaprobar esta --set-upstreamopción algo ambigua en favor de una --set-upstream-toopción más detallada con idéntica sintaxis y comportamiento

git branch --set-upstream-to <origin/remote-branch>
TheCodeArtist
fuente
77
El distintivo --set-upstream está en desuso y se eliminará. Considere usar --track o --set-upstream-to
Rohit Singh Sengar el
1
en este comando, git push -u origin local-branch¿qué originrepresenta? ¿Hay algún caso en el que escribiría algo más que origindespués de -u?
John Henckel
2
@ JohnHenckel se originrefiere al repositorio remoto de git que se usó para clonar. Puede haber múltiples repositorios git remotos . En tal caso, originse puede reemplazar con el nombre apropiado del control remoto deseado al que se desea hacer referencia.
TheCodeArtist
haga un git remote -vpara encontrar sus controles remotos, el predeterminado origingeneralmente es
xploreraj
39

Cuando empuja a un control remoto y usa el --set-upstreamindicador git establece la rama a la que está presionando como la rama de seguimiento remoto de la rama que está presionando.

La adición de un medio de ramificación de seguimiento remoto que git entonces sabe lo que quiere hacer cuando usted git fetch, git pullo git pushen el futuro. Se supone que desea mantener sincronizada la rama local y la rama remota que está rastreando y hace lo apropiado para lograrlo.

Podrías lograr lo mismo con git branch --set-upstream-too git checkout --track. Consulte las páginas de ayuda de git sobre el seguimiento de sucursales para obtener más información.

Será
fuente
Cuando pago con -t, establece el flujo ascendente para empujar, solo para tirar.
Jim
8

git branch --set-upstream <<origin/branch>> oficialmente ya no es compatible y se reemplaza por git branch --set-upstream-to <<origin/branch>>

Turbut Alin
fuente