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.