2017-10-06 2 views
2

Nach meiner letzten Arbeit an einen neuen Zweig branchname zu meiner lokalen Git-Repo auf Maschine A zu begehen, schob ich, dass die Arbeit an meine Gitlab Remote-Repo mitGit Zweige zeigen nicht in "Git Branch" nach Pull oder Fetch aber "Git Checkout" funktioniert ...?

$ git push origin branchname 

Die master Niederlassung bereits mit der Remote-Repo synchron wurde. Alle Filialen erschienen auf der Remote-Repo auf meiner Gitlab-Liste.

Ich ging später Maschine B. ich eine erste tat

$ git pull origin master 

und Master aktualisiert wurde, aber meine neue branchname nicht nach oben zeigte, als ich git branch eingegeben haben, noch einen anderen Zweig tat, dass ich existierte neu in der Verlaufsbaum. Ich ging zu diesem post und folgte den Anweisungen von der ersten Antwort. Ein anderer "Git-Zweig" zeigte meine anderen Zweige immer noch nicht. Auf eine Laune, versuchte ich einfach zu tun

und es war dort und ausgecheckt gut. Ein git branch Befehl zeigte dann Master und Branchname in meiner Liste der Zweige. Ich habe das gleiche mit einem anderen Zweig gemacht, und es erschien auch in der Verzweigungsliste nach einem git branch Befehl.

Ist das normale Git-Verhalten für solche Operationen? Die Hauptsache, die ich mich wundere, ist, wenn Sie von einem entfernten Repo ziehen oder holen, um ein lokales Repo zu aktualisieren, das vorheriges Wissen von Zweigen auf der Fernbedienung wissen musste, warum sie nicht während eines git branch Befehls erscheinen? Und warum kann ich sie überprüfen, wenn ich sie nach einer git branch nicht sehen konnte?

Diese Saga ist ähnlich wie THIS eine, aber meine Filialen waren tatsächlich da und zeigen einfach nicht folgende git Verzweigung Befehle, bis ich sie auscheckte.

+2

'git branch -a' zeigt Ihnen sowohl entfernte als auch lokale Zweige und' git branch' zeigt nur lokale Zweige. In Maschine B existiert 'Branchenname' nicht als lokale Verzweigung vor dem Befehl 'git checkout Branchname'. –

Antwort

2
$ git branch  # only local branches 
* master 

In Maschine B, branchname existiert nicht als lokale Niederlassung vor git checkout branchname Befehl, so dass die Liste zeigt nur master.

$ git fetch 
$ git checkout branchname 
$ git branch 
    master 
* branchname 

Alle entfernten und lokalen Zweigstellen anzeigen.

$ git branch -a # remote and local branches 
$ git branch -r # remote branches only 

Hinweis: hier findet git checkout branchname tatsächlich eine lokale Niederlassung namens branchname. Wenn es gefunden wird, dann gehe einfach zu dieser Verzweigung aus, aber wenn es nicht gefunden wird, sucht es in entfernten Verzweigungslisten (z. B. origin/branchname). Falls gefunden, erstellen Sie einen lokalen Zweig branchname mit der gleichen Historie origin/branchname.

+1

Danke Sajib. Ich hatte diese Experimente gemacht, aber deine Antwort und Kowskys Erklärungen halfen mir, gits Philosophie in diesem speziellen Szenario viel besser zu verstehen. –

2

git branch, ohne irgendwelche Parameter, zeigt nur Ihre lokalen Niederlassungen. Wenn Sie fetch, Informationen über Ihre Remote-Niederlassungen ist aktualisiert, aber es wird nur angezeigt, wenn Sie git branch -r (nur Remote-Niederlassungen) oder, wie @SajibKhan vorgeschlagen, git branch -a (alle Remote-und lokalen Niederlassungen).

Also ja, das ist das beabsichtigte Verhalten. Sie können sie auschecken, da Git den Remote-Zweig erkennt und einen neuen lokalen Zweig einrichtet, der automatisch eingerichtet wird, um den Remote-Zweig zu verfolgen.

+0

Danke kowsky. Meine weiteren Experimente bestätigten Ihre Erklärungen. Ich habe die Git-Philosophie in diesem speziellen Szenario einfach nicht verstanden. Macht jetzt Sinn. –