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?

Skyork
fuente

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.

VonC
fuente
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.

Ámbar
fuente
Esta debería ser la respuesta correcta. Es tan simple como eso.
m4l490n