Wann aktualisiert Git die Liste der Remote-Zweige?

496

Verwenden git branch --allzeigt alle entfernten und lokalen Zweige. Wann aktualisiert Git diese Liste?

Beim Ziehen / Schieben? Und wie aktualisiere ich es mit Git Bash ?

BendEg
quelle
5
Als Hinweis git ls-remotekönnte hier interessant sein.
Bis zum

Antworten:

1221

So aktualisieren Sie die lokale Liste der Remote-Zweige:

git remote update origin --prune

Um alle lokalen und Remote-Zweige anzuzeigen, die (lokal) Git kennt

git branch -a
centralcmd
quelle
143
git remote update origin --pruneist das, wonach ich gesucht habe thx
WonderLand
6
Zum Unterschied zwischen dieser Antwort, die verwendet wird git remote update, und der akzeptierten Antwort, die verwendet wird git fetch, siehe hier
Die rote Erbse
6
Das ist die richtige Antwort. git fetchhat meinen lokalen Cache von Remote-Zweigen nicht entfernt. Nur --prunekonnte alles aufräumen.
Felipe Alvarez
23
Sie können Git dies automatisch tun lassen mitgit config remote.origin.prune true
kjhf
8
git remote prune originhat den gleichen Effekt und Sie tippen weniger.
Dvin
27

Ich glaube, wenn Sie git branch --allvon Bash aus ausführen , spiegelt die Liste der angezeigten Remote- und lokalen Zweige wider, was Ihr lokaler Git zum Zeitpunkt der Ausführung des Befehls "weiß". Da Ihr Git in Bezug auf die lokalen Zweige in Ihrem System immer auf dem neuesten Stand ist, ist die Liste der lokalen Zweige immer korrekt.

Für entfernte Zweige muss dies jedoch nicht der Fall sein. Ihr lokaler Git kennt nur entfernte Zweige, die er beim letzten Abrufen (oder Ziehen) gesehen hat. Es ist also möglich, dass Sie git branch --allund ausführen keinen neuen Remote-Zweig sehen, der nach dem letzten Abrufen oder Ziehen angezeigt wurde.

Um sicherzustellen, dass Ihre lokale und Remote-Zweigstellenliste auf dem neuesten Stand ist, können Sie agit fetch vor dem Ausführen ausführen git branch --all.

Für weitere Informationen sind die "entfernten" Zweige, die beim Ausführen angezeigt git branch --allwerden, überhaupt nicht wirklich entfernt. Sie sind tatsächlich lokal. Angenommen, auf der Fernbedienung befindet sich ein Zweig, den featureSie mindestens einmal in Ihr lokales Git gezogen haben. Sie werden origin/featurebeim Ausführen als Zweig angezeigt git branch --all. Aber dieser Zweig ist eigentlich ein lokaler Git-Zweig. Wenn Sie dies tun git fetch origin, wird dieser Tracking-Zweig mit allen neuen Änderungen von der Fernbedienung aktualisiert. Aus diesem Grund kann Ihr lokaler Status veraltet sein, da möglicherweise neue Remote-Zweige vorhanden sind oder Ihre Tracking-Zweige veraltet sein können.

Tim Biegeleisen
quelle
4
Ja, git fetchhabe es getan.
BendEg
14
Hinweis für die Downvoter: Wenn Sie der Meinung sind, dass korrekte Informationen mit einer gut gemeinten Erklärung eine Downvote verdienen, sprechen Sie zumindest laut und hinterlassen Sie einen Kommentar.
Tim Biegeleisen
3
git fetchfunktioniert bei mir nicht, muss hinzufügen --prune. Übrigens bin ich kein Downvoter;)
Deqing
3
git fetchentfernt gelöschte Remote-Zweige nicht. Das ist wahrscheinlich der Grund, warum einige Leute herabgestimmt haben
Jérôme MEVEL
@ JérômeMEVEL Es ist ein Wunder für mich, dass die akzeptierte Antwort jetzt 1000 positive Stimmen hat. Das ist verrückt ... wünschte, ich hätte diese Art von Belichtung :-)
Tim Biegeleisen
24

Das OP forderte nicht die Bereinigung aller Fernbedienungen an, sondern alle Zweige der Standardfernbedienung.

Damit git fetch --prune sollte es verwendet werden.

Einstellung git config remote.origin.prune truemacht --pruneautomatisch. In diesem Fall git fetchwerden auch veraltete Remote-Zweige von der lokalen Kopie entfernt. Siehe auch Automatisches Beschneiden mit Git-Abruf oder Pull .

Beachten Sie, dass dadurch keine lokalen Zweige bereinigt werden, die einen Remote-Zweig nicht mehr verfolgen. Siehe So beschneiden Sie lokale Tracking-Zweige, die auf der Fernbedienung nicht mehr vorhanden sind .

Oliver
quelle
Um es etwas kürzer zu machengit fetch -p
Michael Warner
2

Verwenden Sie git fetchdiese Option, um alle zuletzt erstellten Zweige abzurufen.

vvv
quelle
1
git fetchhat mit git 2.17.1 nichts für mich geändert. Welche Version und Optionen haben Sie verwendet?
PointedEars
2
Sie brauchen entweder --pruneoder git config remote.NAME.prune truedafür, um die OP-Frage zu lösen
Oliver
-1

Wenn Sie Eclipse verwenden und neue Zweige von Upstream sehen möchten;

Klicken Sie in der Git-Perspektive mit der rechten Maustaste auf ein Git-Repository und wählen Sie dann "Von Upstream abrufen". Dies holt neue entfernte Zweige.

Selman Gun
quelle
-8

Wenn Sie Eclipse verwenden,

  1. Öffnen Sie "Git Repositories"
  2. Finden Sie Ihr Repository.
  3. Öffnen Sie "Filialen" und dann "Fernverfolgung".

Git

Sie sollten alle da drin sein. Rechtsklick und "Kasse".

markthegrea
quelle
Wie beantwortet dies die Frage? - "Wann aktualisiert Git die Liste der Remote-Zweige?"
Peter Mortensen
Als ich meine lokalen Filialen in Eclipse auffrischen wollte, googelte ich und es brachte mich hierher. Dieser Beitrag hat tatsächlich einigen Leuten geholfen, da er einige positive Stimmen hatte. Vielleicht habe ich die Frage falsch verstanden. Für mich ist Eclipse IS Git (die Schnittstelle dazu). Tut mir leid, dass ich alle beleidigt habe!
März 25/19