Die von Ihnen aufgelisteten Schritte funktionieren, aber es gibt einen längeren Weg, der Ihnen mehr Optionen bietet:
git checkout dmgr2 # gets you "on branch dmgr2"
git fetch origin # gets you up to date with origin
git merge origin/master
Der fetch
Befehl kann zu jedem Zeitpunkt vor dem ausgeführt werden merge
, dh Sie können die Reihenfolge des Abrufs und des Auscheckens austauschen, da Sie fetch
einfach zur benannten Fernbedienung ( origin
) gehen und zu ihr sagen: "Geben Sie mir alles, was Sie haben, was ich nicht habe." ", dh alle Commits in allen Filialen. Sie werden in Ihr Repository kopiert, aber nach origin/branch
jedem branch
auf der Fernbedienung genannten Zweig benannt .
An dieser Stelle können Sie einen beliebigen Viewer verwenden ( git log
, gitk
usw.) , um zu sehen „ was sie haben“ , dass Sie dies nicht tun, und vice versa. Manchmal ist dies nur nützlich für warme Fuzzy-Gefühle ("ah, ja, das ist tatsächlich das, was ich will") und manchmal ist es nützlich, um Strategien komplett zu ändern ("whoa, ich will DIESES Zeug noch nicht").
Schließlich merge
übernimmt der Befehl das angegebene Commit, das Sie benennen können origin/master
, und unternimmt alles, um dieses Commit und seine Vorfahren in den Zweig zu bringen, in dem Sie sich befinden, wenn Sie das ausführen merge
. Sie können einen Schnellvorlauf einfügen --no-ff
oder --ff-only
verhindern oder zusammenführen, wenn das Ergebnis ein Schnellvorlauf ist, wenn Sie möchten.
Wenn Sie die Sequenz verwenden:
git checkout dmgr2
git pull origin master
Der pull
Befehl weist git an git fetch
, zu rennen , und dann das moralische Äquivalent von git merge origin/master
. Das ist also fast das Gleiche wie die beiden Schritte von Hand, aber es gibt einige subtile Unterschiede, die Sie wahrscheinlich nicht allzu sehr betreffen. (Insbesondere der fetch
Schritt Lauf durch pull
bringt über nur origin/master
, und es aktualisiert nicht den Referee in Ihrem Repo: 1 Alle Commits windet sich durch die besondere bezeichnet zu nur bis FETCH_HEAD
. Referenz)
Wenn Sie die explizitere git fetch origin
(dann optional umschauende) und dann die git merge origin/master
Sequenz verwenden, können Sie auch Ihre eigene lokale master
Version mit der Fernbedienung auf den neuesten Stand bringen , wobei nur eine fetch
über das Netzwerk ausgeführt wird:
git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
zum Beispiel.
1 Dieser zweite Teil wurde in Git 1.8.4 geändert - ich sage "behoben" - und aktualisiert nun "Remote Branch" -Referenzen opportunistisch. (Es war, wie in den Versionshinweisen angegeben, eine bewusste Entwurfsentscheidung, das Update zu überspringen, aber es stellt sich heraus, dass mehr Leute das Git-Update bevorzugen. Wenn Sie den alten Remote-Zweig SHA-1 möchten, wird er standardmäßig gespeichert Dies ermöglicht auch eine neue Git 1.9 / 2.0-Funktion zum Auffinden von Upstream-Rebases.)