Dies ist vor allem von der Natur einer Kuriosität, wie ich versuche, mit Git vertraut zu werden. Ich habe mir die Dokumentation für "git fetch" angesehen, aber ich sehe keine offensichtliche Erklärung für das Folgende. Vielen Dank im Voraus, und Entschuldigung, wenn das heulend offensichtlich ist.git fetch vs. git fetch ursprung master haben verschiedene effekte auf tracking zweig
1) Von einem zentralen Repository, sagen wir GitHub, klone ich ein Repository namens website
auf jeder der zwei Maschinen, HostA
und HostB
.
2) auf HostA
, mache ich eine Änderung an einer Datei, sagen README.txt
, und begehen Sie es.
An diesem Punkt auf HostA
die Commits für Zweige master
und origin/master
sind, so unterschiedlich zu erwarten, da ich noch nicht
git show master
git show origin/master
Bericht unterschiedlichen Hashes geschoben habe (da master
hat die Änderung und origin/master
nicht)
3) Sobald ich drücke, sind sie danach gleich.
4) nun über auf HostB
, wenn ich wie folgt vorgehen:
git fetch
git merge FETCH_HEAD
danach auf HostB master
und origin/master
Bericht den gleichen Hash bei einer Abfrage mit git show
ABER
wenn ich stattdessen getan hätte, unter HostB
:
git fetch origin master
git merge FETCH_HEAD
zu diesem Zeitpunkt unterscheiden sich die Hashes noch.
git show origin
git show origin/master
Bericht verschiedene Hashes
Die Tracking-Zweig origin/master
wird nicht aktualisiert, bis ich ein git fetch
Ebene tun Warum ist das?
Fast doppelt: (die Tatsache, dass es Pull ist, nicht holen, macht keinen wesentlichen Unterschied) http://stackoverflow.com/questions/1741143/git-pull-origin-mybranch-leaves-local-mybranch-n- commits-ahead-of-origin-warum –