Aktualisieren Sie einen lokalen Zweig mit den Änderungen eines verfolgten Remote-Zweigs

95

Ich habe einen lokalen Zweig namens ' my_local_branch', der einen entfernten Zweig verfolgt origin/my_remote_branch.

Jetzt wurde der Remote-Zweig aktualisiert, und ich bin auf dem ' my_local_branch' und möchte diese Änderungen übernehmen. Soll ich nur tun:

git pull origin my_remote_branch:my_local_branch

Ist das der richtige Weg?

Skyork
quelle

Antworten:

72

Sie haben den Upstream dieses Zweigs festgelegt

(sehen:

git branch -f --track my_local_branch origin / my_remote_branch
# ODER (wenn my_local_branch gerade ausgecheckt ist):
$ git branch --set-upstream-to my_local_branch origin / my_remote_branch

( git branch -f --trackfunktioniert nicht, wenn der Zweig ausgecheckt ist: Verwenden git branch --set-upstream-to Sie stattdessen den zweiten Befehl , sonst erhalten Sie " fatal: Cannot force update the current branch.")

Das bedeutet, dass Ihre Niederlassung bereits konfiguriert ist mit:

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

Git hat bereits alle notwendigen Informationen.
In diesem Fall:

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

reicht.


Wenn Sie diese Upstream-Verzweigungsbeziehung nicht hergestellt hätten, wenn es darum ging, Ihr ' my_local_branch' zu pushen , hätte ein einfaches git push -u origin my_local_branch:my_remote_branchgenügt, um die Upstream-Verzweigung zu pushen und einzurichten.
Danach für die nachfolgenden Züge / Stöße git pulloder git pushhätte es wieder gereicht.

VonC
quelle
Das OP erwähnt, dass sie den Remote-Zweig bereits verfolgen.
Amber
7
@ Amber daher meine Antwort: git pullist genug.
VonC
Der erste Befehl git branch -f --track master origin/mastergibt einen Fehler zurück:fatal: Cannot force update the current branch.
Mark Kramer
@MarkKramer Ja, ich habe die Antwort bearbeitet, um klarer zu machen, dass der zweite Befehl verwendet werden soll, wenn der lokale Zweig gerade ausgecheckt ist.
VonC
Sie sollten es auch ändern in --set-upstream-to, --set-upstreamist veraltet und wird entfernt.
Mark Kramer
86

Sie verwenden die :Syntax nicht - pulländert immer den aktuell ausgecheckten Zweig. So:

git pull origin my_remote_branch

während Sie my_local_branchausgecheckt haben, wird tun, was Sie wollen.

Da Sie den Tracking-Zweig bereits festgelegt haben, müssen Sie ihn nicht einmal angeben - Sie können einfach ...

git pull

Während Sie my_local_branchausgecheckt haben, wird es vom verfolgten Zweig aktualisiert.

Bernstein
quelle
Dies sollte die richtige Antwort sein. So einfach ist das.
m4l490n