Git: Aktualisieren von Remote-Zweiginformationen


125

In einem Git-Repository wurde ein Remote-Zweig gelöscht, den ich nicht verfolge. Wenn ich tippe

git branch -r

Der gelöschte Zweig wird weiterhin angezeigt (und ich kann ihn überprüfen).

Welchen git-Befehl muss ich ausführen, um diese Informationen zu aktualisieren?

Antworten:


39

Wenn Sie so etwas durchführen

git branch -d -r remote_name/branch_name

Sie entfernen nur Ihre lokale Kasse. Dieser Befehl hat keine Auswirkungen auf das Remote-Repository, weshalb er immer noch angezeigt wird.

Lösung:

git push origin :branch_name

entfernt den Remote-Zweig (beachten Sie das ':') und

git branch -d branch_name

entfernt Ihre lokale Kasse.

( Referenz )


146
Sie können auch 'git remote prune origin' ausführen, um Ihre Remote-Referenzen zu bereinigen.
cmcginty

3
Dadurch werden alle Zweige entfernt, die vom Remote-Repository nicht mehr verfolgt werden. Also sei einfach vorsichtig.
Garrett Hyde

4
Ich denke, es ist auch nützlich zu wissen, dass Sie, obwohl etwas ausführlicher, auch git push <remote> --delete <branchname>entfernte Zweige löschen können .
AeroCross

Dies funktioniert normalerweise, aber ich bin heute auf eine Situation gestoßen, in der die Remote-Liste nicht aktualisiert wurde, und habe versucht, einen Zweig zu löschen, der nicht vorhanden war. Daher war zuerst die unten stehende Lösung von @Flo erforderlich.
dgo

284

Wenn Zweige im Remote-Repository gelöscht wurden und Sie alle lokalen Remote-Tracking-Zweige gleichzeitig aktualisieren möchten, können Sie verwenden

$ git remote prune <remotename>

Löschen aller veralteten Fernverfolgungszweige für eine bestimmte Fernbedienung (dh derjenigen, die Zweigen folgen, die im Fernrepository entfernt wurden).

Siehe git remoteDokumentation.


Vielen Dank an @Casey und @Jakub für Ihre Antworten! Wie kommt es, dass die lokal gespeicherten Remote-Verzweigungsinformationen bei der nächsten Verwendung nicht aktualisiert werden git fetch?
JJD

4
@JJD: Weil Sie Ihre Arbeit möglicherweise auf einem Remote-Zweig basieren, der nicht mehr hier ist. Es wurde daher als schlechte Idee angesehen, ohne Aufforderung zu verschwinden. Aus diesem Grund müssen Sie Remote-Tracking-Zweige explizit beschneiden.
Jakub Narębski

Bereinigt "git gc" auch veraltete entfernte Zweige?
James Wald

@ JamesWald: Nein, das tut es nicht. git gcPackt nur Objekte und Refs und löscht dabei nicht referenzierte Objekte (mit einem gewissen Sicherheitsspielraum).
Jakub Narębski

186
git remote update --prune

Sollte die Zweige aller Fernbedienungen aktualisieren, neue hinzufügen und entfernte löschen.

Bearbeiten: Der Befehl zur Remote-Aktualisierung ruft im Wesentlichen die Liste der Zweige auf der Fernbedienung ab. Mit dieser --pruneOption werden Ihre lokalen Fernverfolgungszweige entfernt, die auf Zweige verweisen, die auf der Fernbedienung nicht mehr vorhanden sind .


Das hat bei mir funktioniert. Ich musste einen Remote-Zweig entfernen, der aus irgendeinem Grund nicht mit dem üblichen 'git push origin: <branch_name>' entfernt werden konnte
n0denine

Wäre es richtig zu sagen, dass diese Antwort das tut, was Jakub Narębskis Antwort tut und mehr? Das heißt, es beschneidet und es holt Updates?
Frank Tan

14

Auch nützlich, um neue Remote-Zweige zu sehen:

git fetch --all

Das hat mir sehr geholfen. Ein Fehler in Visual Studio Git verhindert, dass die neuen Zweige angezeigt werden, die nach dem Klonen erstellt wurden. Dieser Befehl hilft
Venkatesh Muniyandi

nett und einfach, danke, hab ein bronzenes Antwortabzeichen auf dem Haus :)
danday74

2

Sie können die Flags -rund kombinieren -d, um entfernte Zweige zu löschen.


toller Tipp! In diesem Fall gibt es jedoch mehrere Zweige, die bereits gelöscht wurden. Es gibt sicherlich einen Befehl zum Abrufen dieser Updates
Bain Markev

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.