Zaktualizuj oddział lokalny, wprowadzając zmiany ze śledzonego oddziału zdalnego


101

Mam lokalny oddział o nazwie „ my_local_branch”, który śledzi oddział zdalnyorigin/my_remote_branch .

Teraz zdalna gałąź została zaktualizowana i jestem na „ my_local_branch” i chcę pobrać te zmiany. Powinienem po prostu zrobić:

git pull origin my_remote_branch:my_local_branch

Czy to właściwy sposób?

Odpowiedzi:


74

Ustawiłeś upstream tej gałęzi

(widzieć:

git branch -f --track my_local_branch origin / my_remote_branch
# LUB (jeśli moja_lokalna_branch jest aktualnie wyrejestrowana):
$ git branch --set-upstream-to my_local_branch origin / my_remote_branch

( git branch -f --tracknie zadziała, jeśli gałąź jest wyewidencjonowana: użyj git branch --set-upstream-to zamiast tego drugiego polecenia , albo otrzymasz "fatal: Cannot force update the current branch. ”)

Oznacza to, że Twój oddział jest już skonfigurowany z:

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

Git ma już wszystkie niezbędne informacje.
W tym wypadku:

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

wystarczy.


Gdybyś nie ustanowił tej relacji odgałęzienia upstream, gdy przyszedłby do wypchnięcia twojego ' my_local_branch', wystarczyłby prosty git push -u origin my_local_branch:my_remote_branch, aby wypchnąć i ustawić gałąź upstream.
Po tym, dla kolejnych pociągnięć / pchnięć, git pulllub git pushznowu, wystarczyłoby.


OP wspomina, że ​​śledzą już zdalną gałąź.
Amber

7
@Amber stąd moja odpowiedź: git pullwystarczy.
VonC,

Pierwsze polecenie git branch -f --track master origin/masterzwraca błąd:fatal: Cannot force update the current branch.
Mark Kramer

@MarkKramer Tak, zredagowałem odpowiedź, aby była jaśniejsza. Drugie polecenie ma być używane, jeśli lokalna gałąź jest obecnie wyewidencjonowana.
VonC

Powinieneś także zmienić to na --set-upstream-to, --set-upstreamjest przestarzałe i zostanie usunięte.
Mark Kramer

91

Nie używasz :składni - pullzawsze modyfikuje aktualnie wyewidencjonowaną gałąź. A zatem:

git pull origin my_remote_branch

gdy się my_local_branchwymeldowałeś, zrobisz, co chcesz.

Ponieważ masz już ustawioną gałąź śledzenia, nie musisz nawet określać - możesz po prostu zrobić ...

git pull

gdy się my_local_branchwyewidencjonowałeś, i zaktualizuje się z śledzonej gałęzi.


1
To powinna być prawidłowa odpowiedź. To takie proste.
m4l490n
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.