Wie entferne ich gelöschte Zweignamen aus der automatischen Vervollständigung?

120

Ich habe git branch -d myBrancheinen Zweig gelöscht. Wenn ich jedoch auf Master bin und versuche, einen neuen Zweig mit auszuchecken git checkout, wird dies myBranchweiterhin in der Registerkarte "Autocomplete" angezeigt.

Wie entferne ich den Namen myBranchvon tab-autocomplete für git checkout?

John Hoffman
quelle
10
Listet git branch -anoch entweder myBranchoder auf origin/myBranch? Beachten Sie, dass, auch wenn myBranchnicht vorhanden ist , git checkout myBranchist immer noch eine gültige Abkürzung für , git checkout -b myBranch origin/myBranchwenn origin/myBranchvorhanden.
Twalberg
2
@twalberg als Antwort wert.
cmbuckley

Antworten:

81

Ein möglicher Grund dafür ist, dass, wenn noch ein Remote-Zweig (z. B. origin/myBranch) vorhanden ist git checkout myBranch, dies als Alternative zu erfolgreich sein wird git checkout -b myBranch origin/myBranch. Dies ist als Annehmlichkeit für den allgemeinen Fall gedacht, dass ein Remote-Zweig zum ersten Mal ausgecheckt wird und ein lokaler Tracking-Zweig mit identischem Namen erstellt wird.

Es gibt auch andere Möglichkeiten, je nachdem, was genau Sie für die Fertigstellung verwenden, aber das ist eines der ersten Dinge, die ich überprüfen würde. Wenn Sie laufen git branch -aund es eine origin/myBranchListe gibt (oder eine für eine andere Fernbedienung als origin, wenn Sie eine solche haben), dann ist das wahrscheinlich ein Schuldiger.

Twalberg
quelle
2
Vielen Dank! Das scheint der Schuldige zu sein. origin/myBranchgibt es noch. Wenn ich den myBranchZweig auf Github (über die Online-Schnittstelle) gelöscht habe, kann ich dann sicher anrufen git branch -d origin/myBranch, um diesen Remote-Zweig zu entfernen?
John Hoffman
99
@ JohnHoffman Das sollte sicher sein, aber ich denke, der bessere Weg wäre git fetch --prune origin. Dadurch werden alle lokalen Tracking-Zweige bereinigt, die auf der Fernbedienung nicht mehr vorhanden sind.
Twalberg
3
@twalberg Ich glaube nicht, dass das Löschen des lokalen und des Remote-Zweigs ausreicht, um alle alten Zweige in Autocomplete zu entfernen. Ich glaube, Sie müssen , git fetch --prune origindamit die lokalen Verweise auf entfernte Zweigstellen in der automatischen Vervollständigung verschwinden. Könnte gut sein, das vom Kommentar zur Antwort zu verschieben. Auf jeden Fall danke für deine Antwort, die mir geholfen hat!
Timmyl
4
git branch -aführte mich auf den richtigen Weg; Mein Kollege schlug vor git fetch --prune --all, alle toten Zweige von allen Fernbedienungen zu entfernen, was nützlich ist, wenn Sie mit vielen Entwicklern mit vielen Gabeln arbeiten.
Ericsoco
173

git fetch --prune --all

Veröffentlichen Sie dies als eigene Antwort, da es sich um eine einzeilige Lösung handelt. Wenn Sie jedoch abstimmen, müssen Sie für die Antwort von @ twalberg oben stimmen.

@ twalbergs Vorschlag, git branch -amich auf den richtigen Weg zu führen; Mein Kollege schlug vor git fetch --prune --all, alle toten Zweige von allen Fernbedienungen zu entfernen, was nützlich ist, wenn Sie mit vielen Entwicklern mit vielen Gabeln arbeiten.

ericsoco
quelle
19
Während die akzeptierte Antwort eine nette Erklärung gibt, warum dies geschieht, stellt diese Antwort eine tatsächliche Lösung des Problems dar und sollte daher meiner Meinung nach akzeptiert werden.
Patrick Oscity
3
Die Namen der toten Zweige werden weiterhin in der automatischen Vervollständigung angezeigt.
Fitsyu