2012-10-06 16 views
47

Ein Kollege einen neuen Remote-Zweig Herkunft/dev/Homepage geschoben und ich kann es nicht sehen, wenn ich laufe:Git: Kann nicht sehen neuen Remote-Zweig

$ git branch -r 

ich Zweige Fern sieht vorbestehenden noch.

Ich nehme an, das liegt daran, dass meine lokalen Remote-Refs nicht aktuell sind, also wenn ich einen Git-Pull ausgeführt habe, ist nichts passiert, seit Git Pull zieht nur auf dem aktuellen Arbeitszweig richtig? Im Gegensatz zu git push was alle Äste, die Änderungen haben, in den entsprechenden entfernten Zweig schiebt?

Antwort

79

Überprüfen Sie zuerst, ob die Verzweigung tatsächlich per Fernzugriff übertragen wurde, indem Sie den Befehl git ls-remote origin verwenden. Wenn der neue Zweig in der Ausgabe angezeigt wird, versuchen Sie, den Befehl git fetch zu geben: Er sollte die Zweigverweise vom Remote-Repository herunterladen.

Wenn Ihre Remote-Zweigstelle immer noch nicht angezeigt wird, überprüfen Sie (in der ls-remote-Ausgabe), was der Zweigname auf der Remote ist, und speziell, wenn es mit refs/heads/ beginnt. Dies liegt daran, dass standardmäßig der Wert remote.<name>.fetch ist:

+refs/heads/*:refs/remotes/origin/* 

so nur, dass die Remote-Referenzen, deren Name beginnt mit refs/heads/ lokal als Remote-Tracking-Referenzen unter refs/remotes/origin/ (dh abgebildet werden, werden sie sich Remote- Verfolgungszweige)

+1

Ich war in der Lage, den neuen Remote-Zweig zu sehen, nachdem ich einen git-fetch-Ursprung gemacht habe, aber nicht sicher, was der Unterschied ist, wenn ich gerade einen git fetch gemacht habe? Ich habe von git remote update gelesen, aber war nicht klar, was das getan hätte. Müsste ich von jetzt an git fetch für neue entfernte Zweige ausführen? – hybrid9

+0

@ hybrid9 Wenn Sie 'git fetch' verwenden, lädt git die Referenzen aus dem Standard-Remote-Repository, das in' .git/config' angegeben wurde: normalerweise heißt es 'origin', also sind beide Befehle äquivalent, aber Ihre spezifische Konfiguration könnte aus irgendeinem Grund anders sein. Nein, Sie müssen nicht für jeden Zweig "git fetch" angeben, da (standardmäßig) ** alle ** Zweige abgerufen werden. –

+0

Mein Git ist der Standard keine Änderungen an meiner Konfig. Entschuldigung, ich meinte, wenn eine neue entfernte Zweigstelle von jemandem hinzugefügt wird, in dem ich arbeiten muss, müsste ich die git fetch-Herkunft erneut ausführen, bevor ich sie verfolgen kann? Ich mache mir Sorgen darüber, was ich mit meinen anderen remote verfolgten Zweigen wie Entwicklung und Master machen werde, wenn ich noch arbeite. Rate ich, ich sollte an denen ziehen, bevor ich hole? – hybrid9

19

Durch Ausführen eines Git Remote-Updates wird auch die Liste der verfügbaren Zweige aus dem Remote-Repository aktualisiert.

Wenn Sie TortoiseGit verwenden, können Sie ab Version 1.8.3.0 "Git -> Sync" verwenden und es wird eine Schaltfläche "Remote Update" unten links im Fenster erscheinen. Klicke darauf. Dann sollten Sie in der Lage sein, "Git -> Switch/Checkout" zu verwenden und den neuen Remote-Zweig in dem Dropdown-Feld der Zweige anzuzeigen, die Sie auswählen können.

+11

'git remote update' ist ein alter Weg Um dies zu tun, ist der neuere bevorzugte Befehl 'git fetch'. –

1

Was schließlich endete für mich zu arbeiten war die Remote-Repository Namen den git fetch Befehl hinzuzufügen, wie folgt aus:

git fetch core 

Jetzt können Sie alle von ihnen wie diese:

git branch --all 
9

prüfen Sie, ob .git/config enthält

[remote "origin"] 
    url = … 
    fetch = +refs/heads/master:refs/remotes/origin/master 

Wenn ja, cha nge, es zu sagen

[remote "origin"] 
    url = … 
    fetch = +refs/heads/*:refs/remotes/origin/* 

Dann sollten Sie in der Lage sein, es zu benutzen:

$ git fetch 
remote: Counting objects: … 
remote: Compressing objects: .. 
Unpacking objects: … 
remote: … 
From … 
* [new branch]   branchname -> origin/branchname 
$ git checkout branchname 
Branch branchname set up to track remote branch branchname from origin. 
Switched to a new branch 'branchname' 
0

Es klingt trivial, aber mein Problem ist, dass ich nicht in dem richtigen Projekt. Stellen Sie sicher, dass Sie sich in dem Projekt befinden, in dem Sie sich befinden; Andernfalls werden Sie nicht in der Lage sein, die richtigen Zweige herunterzuziehen.