Atualizar uma filial local com as alterações de uma filial remota rastreada

95

Eu tenho uma filial local chamada ' my_local_branch', que rastreia uma filial remota origin/my_remote_branch.

Agora, o branch remoto foi atualizado, e eu estou no ' my_local_branch' e desejo obter essas alterações. Devo apenas fazer:

git pull origin my_remote_branch:my_local_branch

Esta é a maneira correta?

skyork
fonte

Respostas:

72

Você configurou o upstream desse branch

(Vejo:

git branch -f --track my_local_branch origin / my_remote_branch
# OU (se my_local_branch estiver em check-out):
$ git branch --set-upstream-to my_local_branch origin / my_remote_branch

( git branch -f --tracknão funcionará se o branch estiver em check-out: use o segundo comando git branch --set-upstream-to , ou você obteria " fatal: Cannot force update the current branch.")

Isso significa que sua filial está configurada com:

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

O Git já possui todas as informações necessárias.
Nesse caso:

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

basta.


Se você não tivesse estabelecido aquele relacionamento de branch upstream quando se tratava de enviar seu ' my_local_branch', então um simples git push -u origin my_local_branch:my_remote_branchprocedimento teria sido suficiente para enviar e configurar o branch upstream.
Depois disso, para os puxões / empurrões subsequentes, git pullou git pushseriam, novamente, suficientes.

VonC
fonte
O OP menciona que eles já estão rastreando a filial remota.
Amber
7
@Amber daí minha resposta: git pullé o suficiente.
VonC 01 de
O primeiro comando git branch -f --track master origin/masterretorna um erro:fatal: Cannot force update the current branch.
Mark Kramer
@MarkKramer Sim, editei a resposta para deixar mais claro que o segundo comando deve ser usado se o branch local estiver em check-out.
VonC de
Você também deve alterá-lo para --set-upstream-to, --set-upstreamestá obsoleto e será removido.
Mark Kramer
86

Você não usa a :sintaxe - pullsempre modifica o branch atualmente em check-out. Portanto:

git pull origin my_remote_branch

enquanto você fez my_local_branchcheck-out fará o que você quiser.

Como você já tem o branch de rastreamento definido, você nem precisa especificar - você pode apenas fazer ...

git pull

enquanto você fez my_local_branchcheck-out, e ele será atualizado a partir do branch monitorado.

Âmbar
fonte
Esta deve ser a resposta correta. É simples assim.
m4l490n