In welchen Umständen könnte das git pull origin master
Befehlsergebnis in einer anderen Arbeitskopie Zustand als git checkout master
->git pull
->git checkout feat-a
->git merge master
?Was könnte dazu führen, dass `git pull` keine fernen Änderungen erkennt?
Die lange Geschichte.
Ich habe eine Funktion Zweig, lassen Sie uns feat-a
nennen. Ich bin der einzige Entwickler, der an dieser Branche arbeitet. Der Zweig wurde von master
Branch erstellt. Beide Zweige haben entfernte Ursprünge, origin/feat-a
und origin/master
. Nichts besonderes, Ihre typische Git Repository Anordnung.
Heute wollte ich meinen Feature-Zweig von remote master
aktualisieren. Von früherer Kommunikation mit anderen Entwicklern wusste ich, dass es widersprüchliche Änderungen geben wird, wenn ich remote master
in meinem Feature-Zweig zusammenführe.
Ich benutze SourceTree. Also, mit feat-a
Zweig ausgecheckt, öffnete ich das Kontextmenü auf Herkunft/Meister Zweig und wählte Pull origin/master into current branch
. Ich war schockiert zu sehen, dass Git berichtet, dass meine Filiale bereits auf dem neuesten Stand ist. Ich wusste, dass es nicht richtig ist, es muss Änderungen auf remote master
Zweig sein. Ich wiederholte den Befehl einige Male. Immer die gleiche aktuelle Nachricht erhalten.
Um 100% sicher zu sein, habe ich es "den langen Weg" gemacht. Ich überprüfte master
Zweig, klickte Pull
Knopf. Die Filiale wurde mit den letzten Commits aktualisiert. Dann habe ich ausgecheckt feat-a
Zweig und zog dann Kontextmenü auf Master-Zweig und wählte Merge master into current branch
. Voila! Hier war der Merge-Konflikt, den ich erwartete!
Das hat mich verwirrt. Ich hatte angenommen, dass die Durchführung pull
von origin/master
in meinem aktuellen Zweig ist das gleiche wie Auschecken master
, Ziehen, Auschecken der anderen Zweig und dann Verschmelzen master
in den aktuellen Zweig (mit Ausnahme, dass das Ziehen von remote master
in einen anderen Zweig mein nicht aktualisiert local master
, aber das sollte dieses Problem nicht beeinflussen).
Wesentlichen aus irgendeinem Grund pull
Befehl von origin/master
in feat-a
versuchte, mich davon zu überzeugen, dass es keine Änderungen an origin/master
, und nur der lange Weg mit Schaltzweigen und manuelle Zusammenführung wie erwartet gearbeitet.
Ich bin mir nicht sicher, ob SourceTree etwas Spezielles tut, das dieses Problem beeinflussen könnte.
Auch ich habe gestern dieses Problem konfrontiert, während ich Code aus Github 'Master Branch' in meine' Heroku Branch' in der lokalen Maschine zog, aber es sagte, dass Ihre Branche aktuell ist, und dann die Schritte, die Sie oben erwähnt haben. Ich dachte, dass es ein Fehler gewesen sein muss. – sahil
Vergewissern Sie sich, dass Sie das Tracking nach Ihren Vorstellungen durchführen. 'git branch -avv' zeigt Ihnen, welche Remote-Zweige für jeden lokalen Zweig verfolgt werden. Sie können feststellen, dass "Master" irgendwie etwas anderes als "Herkunft/Master" verfolgt. –