Come rimuovo i nomi dei rami eliminati dal completamento automatico?


120

Ho usato git branch -d myBranchper eliminare un ramo. Tuttavia, quando sono in master e provo a effettuare il checkout di un nuovo ramo con git checkout, myBranchappare ancora nella scheda completamento automatico.

Come faccio a rimuovere il nome myBranchdal completamento automatico della scheda per git checkout?


10
Fa git branch -aancora la lista sia myBrancho origin/myBranch? Nota che, anche se myBranchnon esiste, git checkout myBranchè comunque una scorciatoia valida per git checkout -b myBranch origin/myBranchse origin/myBranchesiste.
twalberg

2
@twalberg vale la pena postare come risposta.
cmbuckley

Risposte:


81

Una possibile ragione di ciò è che, se origin/myBranchesiste ancora un ramo remoto (ad esempio ), allora git checkout myBranchavrà successo come alternativa a git checkout -b myBranch origin/myBranch. Questo è inteso come una comodità per il caso comune di checkout di un ramo remoto per la prima volta, creando un ramo di tracciamento locale con lo stesso nome.

Ci sono anche altre possibilità, a seconda di cosa stai usando esattamente per il completamento, ma questa è una delle prime cose che controllo. Se corri git branch -ae ce n'è uno origin/myBranchelencato (o uno per un telecomando diverso da origin, se lo hai), allora è un probabile colpevole.


2
Grazie! Questo sembra essere il colpevole. origin/myBranchesiste ancora. Se ho eliminato il myBranchramo su GitHub (tramite l'interfaccia online), è sicuro per me chiamare git branch -d origin/myBranchper rimuovere quel ramo remoto?
John Hoffman

99
@ JohnHoffman Dovrebbe essere sicuro, ma penso che sarebbe il modo migliore git fetch --prune origin. Ciò ripulirà tutti i rami di tracciamento locale che non esistono più sul telecomando.
twalberg

3
@twalberg Non credo che la semplice eliminazione del ramo locale e remoto sia sufficiente per eliminare tutti i vecchi rami nel completamento automatico. Credo che sia necessario che git fetch --prune origini riferimenti locali ai rami remoti scompaiano nel completamento automatico. Potrebbe essere utile spostarlo dal commento alla risposta. In ogni caso grazie per la tua risposta in quanto mi ha aiutato!
timmyl

4
git branch -ami ha portato sulla strada giusta; il mio collega ha suggerito git fetch --prune --alldi potare tutti i rami morti da tutti i telecomandi, il che è utile quando si lavora con molti sviluppatori con molte forchette.
ericsoco

173

git fetch --prune --all

Pubblicando questo come risposta a sé stante poiché è una correzione di una riga, ma se voti assicurati di votare per la risposta di @ twalberg sopra.

il suggerimento di @ twalberg per git branch -aportarmi sulla strada giusta; il mio collega ha suggerito git fetch --prune --alldi potare tutti i rami morti da tutti i telecomandi, il che è utile quando si lavora con molti sviluppatori con molte forchette.


19
Mentre la risposta accettata fornisce una bella spiegazione del motivo per cui ciò accade, questa risposta presenta una soluzione effettiva al problema e dovrebbe quindi essere accettata IMHO.
Patrick Oscity

3
i nomi dei rami morti vengono ancora visualizzati nel completamento automatico.
Fitsyu
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.