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?

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.


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.


Dies sollte die richtige Antwort sein. So einfach ist das.
m4l490n
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.