HOWTO · Git

Git Set Upstream Branch

Aprende a configurar el seguimiento upstream de una rama en Git para vincularla con una rama remota.

En esta página

Una rama upstream es la rama de seguimiento remoto a la que sigue una rama local. Una vez configurada esta relación, Git puede determinar qué rama remota comparar o usar en las operaciones habituales de git pull y git push. Elige el comando según si aún hay que publicar la rama, si ya existe o si vas a crearla localmente por primera vez.

Qué hace una rama upstream

El seguimiento conecta una rama local con una rama de seguimiento remoto, por ejemplo, la rama local my-feature-branch con origin/my-feature-branch. Por sí solo, no fusiona ramas ni copia commits. Le proporciona a Git un destino predeterminado y un punto de comparación, así que después normalmente puedes omitir los argumentos del remoto y de la rama al hacer git pull y git push.

La rama de seguimiento remoto debe estar disponible en tu repositorio local para que funcionen los comandos que la mencionan. Se actualiza cuando obtienes cambios del remoto. En los ejemplos siguientes, origin es el nombre del remoto y my-feature-branch es el nombre de la rama; sustitúyelos por los nombres de tu repositorio.

Configurar upstream al publicar una rama nueva

Si aún no has publicado la rama local, puedes publicarla sin configurar el seguimiento con git push origin my-feature-branch. Esto envía la rama a origin, pero para los siguientes envíos aún tendrás que indicar el remoto y la rama. Para publicar la rama y configurar el seguimiento en una sola operación, ejecuta git push --set-upstream origin my-feature-branch; -u es la forma abreviada. Una vez configurado el seguimiento, normalmente podrás omitir el remoto y la rama en los siguientes envíos.

Un pequeño formateador puede ayudarte a comprobar el orden de los argumentos. Muestra un comando para que lo ejecutes; no invoca Git ni publica una rama.

Ejecuta este ejemplo:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

branch = "my-feature-branch"
remote = "origin"
print(f"git push --set-upstream {remote} {branch}")

El código y las etiquetas o salidas visibles de este ejemplo se mantienen en inglés.

git push --set-upstream origin my-feature-branch

Después de ejecutar el comando de Git en tu repositorio, se crea la rama remota y la rama local actual empieza a seguirla. La opción --set-upstream-to pertenece a git branch; no es la opción de git push para publicar una rama nueva.

Configurar upstream para una rama local existente

Si ya existen tanto la rama local como su rama de seguimiento remoto, cambia a la rama local y configura su upstream con git branch --set-upstream-to=origin/my-feature-branch. La forma abreviada es git branch -u origin/my-feature-branch.

Estos comandos configuran la rama local actual. Primero, asegúrate de estar en la rama que quieres vincular; por ejemplo, puedes usar git checkout my-feature-branch. Si origin/my-feature-branch aún no está entre tus referencias de seguimiento remoto, obtén los cambios del remoto primero. Esto cambia la relación entre las ramas, pero no envía commits.

Crear una rama local que siga una rama remota

Si la rama existe en el remoto, pero todavía no en tu repositorio local, créala y cámbiate a ella desde la rama de seguimiento remoto con git checkout -b my-feature-branch origin/my-feature-branch. Esta forma establecida de checkout crea la rama local y configura como upstream la rama de seguimiento remoto indicada.

El nombre local no debe estar ya en uso y la referencia de seguimiento remoto debe estar disponible. Si hace falta, obtén primero los cambios del remoto. Esto difiere de publicar una rama local nueva: aquí, la rama remota es el punto de partida de la rama local.

Consultar o quitar una rama upstream

Ejecuta git status en la rama local para consultar su relación con el upstream. Cuando Git puede comparar ambos lados, el estado puede indicar que la rama está por delante, por detrás o que ha divergido; esa información te ayuda a decidir si debes hacer push, pull o conciliar los commits. Si el estado no muestra información de seguimiento, comprueba que haya un upstream configurado y que se haya obtenido la referencia de seguimiento remoto.

Para dejar de seguir la rama remota, ejecuta git branch --unset-upstream mientras estés en la rama local. Esto elimina únicamente la relación de seguimiento: no borra la rama local, la rama remota ni los commits. Más adelante puedes configurar otro upstream con git branch --set-upstream-to=<remote>/<branch>.