Die Schritte, die Sie arbeiten aufgeführt, aber es gibt einen längeren Weg, die Ihnen mehr Möglichkeiten gibt:
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 an jedem Punkt vor dem merge
erfolgen, dh, können Sie die Reihenfolge der Swap das Holen und Auschecken, denn fetch
geht einfach zu der named remote (origin
) und sagt dazu: "gib mir alles was du hast das ich nicht mache", dh alle commits in allen Zweigen. Sie werden in Ihr Repository kopiert, aber auf der Fernbedienung origin/branch
für einen beliebigen Zweig mit dem Namen branch
benannt.
An dieser Stelle können Sie jeden Betrachter verwenden können (git log
, gitk
, etc.), um zu sehen „was sie haben“, dass Sie dies nicht tun, und umgekehrt. Manchmal ist dies nur nützlich für Warm Fuzzy Feelings ("Ah, ja, das ist in der Tat, was ich will") und manchmal ist es nützlich, Strategien völlig zu ändern ("whoa, ich will das Zeug noch nicht").
Schließlich wird der merge
Befehl nimmt den Commit gegeben, was Sie als origin/master
nennen kann, und tut, was er in diesem begehen und seine Vorfahren zu bringen braucht, um alles, was Zweig sind Sie an, wenn Sie die merge
laufen. Sie können --no-ff
oder --ff-only
einfügen, um einen schnellen Vorlauf zu verhindern, oder nur zusammenführen, wenn das Ergebnis ein schneller Vorlauf ist, wenn Sie möchten.
Wenn Sie die Reihenfolge verwenden:
git checkout dmgr2
git pull origin master
der pull
Befehl git instruiert git fetch
laufen, und dann das moralische Äquivalent von git merge origin/master
. Also das ist fast das gleiche wie die zwei Schritte von Hand zu tun, aber es gibt einige subtile Unterschiede, die wahrscheinlich nicht zu sehr auf Sie bezogen sind. (Insbesondere die fetch
Schritt laufen durch pull
bringt über nurorigin/master
, und es nicht den Referee in Ihrem Repo aktualisieren: alle neuen Commits aufwickelt bezeichnet zu nur durch die besondere FETCH_HEAD
Referenz.)
wenn Sie die mehr expliziten git fetch origin
(dann optional umsehe) verwenden und dann git merge origin/master
Sequenz, können Sie auch Ihre eigenen lokalen master
auf dem neuesten Stand mit der Fernbedienung bringen, mit nur einem fetch
Lauf über das Netzwerk:
git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
zum Beispiel.
Dieser zweite Teil geändert-I wurde "fixed" -in git 1.8.4, sagen die jetzt "remote Zweig" Referenzen opportunistisch aktualisiert. (Es war, wie die Release-Notes sagen, eine bewusste Design-Entscheidung, das Update zu überspringen, aber es stellt sich heraus, dass mehr Leute es bevorzugen, dass git es aktualisiert.Wenn Sie den alten Remote-Zweig SHA-1 verwenden möchten, wird er standardmäßig im Reflog gespeichert und kann daher wiederhergestellt werden. Dies ermöglicht auch eine neue git 1.9/2.0-Funktion zum Auffinden von Upstream-Rebases.)
zuerst alle Ihre Änderungen in dmgr2-Zweig festschreiben. und zeigen Sie dann 1.git Kasse Master zu beherrschen und dann die letzte Änderung erhalten 2.git zu ziehen 3.git dmgr2 fusionieren 4.git -u origin master schieben und dann zu Ihrem dmgr2 5.git Kasse gehen zurück dmgr2 –
Ich habe bereits alle meine Änderungen in den Zweig dmgr2 übernommen, leider vergessen, dass –
hinzufügen, wenn ich Schritt 4, nicht, dass Push meine Entwicklung Änderungen in Master? Ich möchte das nicht tun –