2016-02-24 8 views
5

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.

+0

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

+0

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. –

Antwort

1

Sie sagen, Sie verwenden Sourcetree, also glaube ich, Sie haben nicht git pull origin master in der Befehlszeile eingegeben. Meine Vermutung ist, dass es entweder etwas verwirrend in der GUI-Nachricht oder ein Fehler in Sourcetree ist.

Ich würde eher die Sourcetree Entwickler fragen.

+0

Ja, das könnte der Fall sein. Ich habe das Problem heute erfahren, nachdem ich SourceTree aktualisiert habe. Ich hatte solche Probleme früher nicht, also könnte das in der Tat ein neuer Fehler in SourceTree sein. Ich werde versuchen, es heute zu reproduzieren. – JustAMartin

+0

Sie hatten Recht. Ich - und einige meiner Kollegen - wurden Opfer dieses Fehlers: https://jira.atlassian.com/browse/SRCTREEWIN-4329 Ich denke, das ist der Preis für vertrauenswürdige GUI-Tools zu viel. – JustAMartin