Actualizar una sucursal local con los cambios de una sucursal remota rastreada


96

Tengo una rama local llamada " my_local_branch", que rastrea una rama remota origin/my_remote_branch.

Ahora, la rama remota se ha actualizado, y estoy en ' my_local_branch' y quiero incorporar esos cambios. Debería hacer:

git pull origin my_remote_branch:my_local_branch

¿Es esta la forma correcta?

Respuestas:


72

Has configurado el flujo ascendente de esa rama

(ver:

git branch -f --track my_local_branch origin / my_remote_branch
# O (si my_local_branch está actualmente desprotegido):
$ git branch --set-upstream-to my_local_branch origin / my_remote_branch

( git branch -f --trackno funcionará si la rama está desprotegida: use el segundo comando en su git branch --set-upstream-to lugar, o obtendrá " fatal: Cannot force update the current branch.")

Eso significa que su sucursal ya está configurada con:

branch.my_local_branch.remote origin
branch.my_local_branch.merge my_remote_branch

Git ya tiene toda la información necesaria.
En ese caso:

# if you weren't already on my_local_branch branch:
git checkout my_local_branch 
# then:
git pull

es suficiente.


Si no hubiera establecido esa relación de rama ascendente cuando se trataba de impulsar su ' my_local_branch', entonces un simple git push -u origin my_local_branch:my_remote_branchhabría sido suficiente para impulsar y establecer la rama ascendente.
Después de eso, para los tirones / empujones posteriores, git pullo git pushhabría sido suficiente, de nuevo.


El OP menciona que ya están rastreando la rama remota.
Ámbar

7
@ Ámbar de ahí mi respuesta: git pulles suficiente.
VonC

El primer comando git branch -f --track master origin/masterdevuelve un error:fatal: Cannot force update the current branch.
Mark Kramer

@MarkKramer Sí, he editado la respuesta para que quede más claro que el segundo comando debe usarse si la sucursal local está actualmente desprotegida.
VonC

También debe cambiarlo a --set-upstream-to, --set-upstreamestá en desuso y se eliminará.
Mark Kramer

89

No usa la :sintaxis: pullsiempre modifica la rama actualmente desprotegida. Así:

git pull origin my_remote_branch

mientras haya realizado el my_local_branchcheck out hará lo que quiera.

Como ya tiene configurada la rama de seguimiento, ni siquiera necesita especificar; simplemente podría hacer ...

git pull

mientras ha realizado el my_local_branchcheck out, y se actualizará desde la rama rastreada.


Esta debería ser la respuesta correcta. Es tan simple como eso.
m4l490n
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.