Pregunta ¿Hace que una rama existente de Git rastree una rama remota?


Sé cómo hacer una nueva rama que rastree las sucursales remotas, pero ¿Cómo hago que una bifurcación existente sea una sucursal remota?

Sé que puedo simplemente editar el .git/config archivo, pero parece que debería haber una manera más fácil.


3074
2018-02-06 15:14


origen


Respuestas:


Dada una sucursal foo y un control remoto upstream:

A partir de Git 1.8.0:

git branch -u upstream/foo

O, si la sucursal local foo no es la rama actual:

git branch -u upstream/foo foo

O, si desea escribir comandos más largos, estos son equivalentes a los dos anteriores:

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

A partir de Git 1.7.0:

git branch --set-upstream foo upstream/foo

Notas:

Todos los comandos anteriores causarán una rama local foo rastrear la sucursal remota foo desde remoto upstream. La sintaxis anterior (1.7.x) está en desuso en favor de la nueva sintaxis (1.8+). La nueva sintaxis pretende ser más intuitiva y fácil de recordar.


Ver también: ¿Por qué tengo que hacer `--set-upstream` todo el tiempo?


3745
2018-02-18 03:06



Puede hacer lo siguiente (suponiendo que está desprotegido en el maestro y desea enviarlo a un maestro de sucursal remota):

Configure el "control remoto" si no lo tiene ya

git remote add origin ssh://...

Ahora configure maestro para saber hacer un seguimiento:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

Y empuje:

git push origin master

206
2018-03-09 08:50



Lo hago como un efecto secundario de empujar con el -u opción como en

$ git push -u origin branch-name

La opción larga equivalente es --set-upstream.

los git-branch comando también entiende --set-upstream, pero su uso puede ser confuso. Versión 1.8.0 modifica la interfaz.

git branch --set-upstream está en desuso y puede ser eliminado en un futuro relativamente distante. git branch [-u|--set-upstream-to] ha sido presentado con un orden de argumentos más sano.

...

Fue tentador decir git branch --set-upstream origin/master, pero eso le dice a Git que organice la rama local "origen / maestro" para que se integre con la rama actualmente desprotegida, lo que es muy poco probable que el usuario haya querido decir. La opción está en desuso usa el nuevo --set-upstream-to (con un corto y dulce -u) opción en su lugar.

Digamos que tiene un local foo y quiere que trate la rama con el mismo nombre que su upstream. Haz que esto suceda con

$ git branch foo
$ git branch --set-upstream-to=origin/foo

o solo

$ git branch --set-upstream-to=origin/foo foo

130
2017-10-02 16:24



Puede encontrar el git_remote_branch herramienta útil. Ofrece comandos simples para crear, publicar, borrar, rastrear y renombrar sucursales remotas. Una buena característica es que puedes preguntar grb comando para explicar qué comandos git ejecutaría.

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch

51
2018-02-06 17:11



En realidad, para que la respuesta aceptada funcione:

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa

49
2017-11-23 12:08



Creo que ya en Git 1.5.x podrías hacer una sucursal local $BRANCH rastrear una rama remota origin/$BRANCH, Me gusta esto.

Dado que $BRANCH y origin/$BRANCH existir, y usted no ha chequeado actualmente $BRANCH (aléjate si tienes), hazlo:

git branch -f --track $BRANCH origin/$BRANCH

Esto recrea $BRANCH como una rama de seguimiento. los -f fuerza a la creación a pesar $BRANCH ya existente. --track es opcional si los valores predeterminados usuales están en su lugar (es decir, el parámetro git-config branch.autosetupmerge es verdad).

Nota, si origin/$BRANCH todavía no existe, puede crearlo presionando a su $BRANCH en el repositorio remoto con:

git push origin $BRANCH

Seguido por el comando anterior para promover la rama local en una rama de seguimiento.


40
2017-07-28 09:33



1- actualiza tus metadatos locales usando: git fetch --todos

enter image description here

2- muestra tus sucursales remotas y locales usando: git branch -a , mira la siguiente captura de pantalla

enter image description here

3- cambiar a la rama de destino, que desea vincular con el control remoto: utilizando

git checkout branchName

ejemplo:

enter image description here 

4- Enlace su sucursal local a una sucursal remota usando:

git branch --set-upstream-to nameOfRemoteBranch

N.B: nameOfRemoteBranch : para copiar de la salida del paso 2 "git branch -r"

Ejemplo de uso:

enter image description here


28
2018-06-06 14:21



Asegúrate de ejecutar:

git config push.default tracking

para poder empujar sin problemas


22
2017-08-29 21:38



Edición .git/config es probablemente la forma más fácil y rápida. Eso es lo que los comandos de Git para manejar sucursales remotas están haciendo, de todos modos.

Si no quiere ensuciar el archivo a mano (y no es tan difícil de hacer), siempre puede usar git config para hacerlo ... pero de nuevo, eso solo va a editar el .git/config archivo, de todos modos.

Hay, por supuesto, formas de rastrear automáticamente una rama remota cuando se usa git checkout (pasando el --track bandera, por ejemplo), pero estos comandos funcionan con nuevo ramas, no existentes.


21
2018-02-06 15:17



En muy corto

git branch --set-upstream yourLocalBranchName origin/develop

Esto hará que tu yourLocalBranchName rastrear la rama remota llamada develop.


16
2017-10-09 07:19



Para 1.6.x, se puede hacer usando el git_remote_branch herramienta:

grb track foo upstream

Eso hará que Git haga foo pista upstream/foo.


14
2018-06-01 02:23