Como faço para remover nomes de branch excluídos do preenchimento automático?

120

Eu costumava git branch -d myBranchdeletar um galho. Porém, quando estou no master e tento fazer o checkout de um novo branch com git checkout, myBranchainda aparece na aba autocomplete.

Como removo o nome myBranchdo preenchimento automático da guia para git checkout?

John Hoffman
fonte
10
Será que git branch -aainda lista quer myBranchou origin/myBranch? Observe que, mesmo se myBranchnão existir, git checkout myBranchainda é um atalho válido para git checkout -b myBranch origin/myBranchse origin/myBranchexistir.
twalberg
2
@twalberg vale a pena postar como uma resposta.
cmbuckley

Respostas:

81

Uma possível razão para isso é que, se uma ramificação remota (por exemplo origin/myBranch) ainda existir, git checkout myBranchserá bem-sucedida como alternativa a git checkout -b myBranch origin/myBranch. Isso é pretendido como uma conveniência para o caso comum de check-out de uma filial remota pela primeira vez, criando uma filial de rastreamento local com nome idêntico.

Existem outras possibilidades também, dependendo do que exatamente você está usando para a conclusão, mas essa é uma das primeiras coisas que eu verificaria. Se você executar git branch -ae houver um origin/myBranchlistado (ou um para um controle remoto diferente de origin, se tiver), é provável que seja o culpado.

Twalberg
fonte
2
Obrigado! Esse parece ser o culpado. origin/myBranchainda existe. Se eu excluir o myBranchbranch no Github (por meio da interface online), é seguro ligar git branch -d origin/myBranchpara remover aquele branch remoto?
John Hoffman
99
@JohnHoffman Isso deveria ser seguro, mas acho que o melhor seria git fetch --prune origin. Isso limpará todas as ramificações de rastreamento locais que não existem mais no remoto.
twalberg
3
@twalberg Não acredito que simplesmente deletar o branch local e remoto seja suficiente para livrar-se de todos os branches antigos no preenchimento automático. Eu acredito que você precisa para git fetch --prune originque as referências locais a branches remotos desapareçam no preenchimento automático. Pode ser bom mover isso do comentário para a resposta. Em qualquer caso, obrigado pela sua resposta, pois me ajudou!
timmyl
4
git branch -ame levou no caminho certo; meu colega de trabalho sugeriu git fetch --prune --allpodar todos os galhos mortos de todos os controles remotos, o que é útil ao trabalhar com muitos desenvolvedores com muitos garfos.
ericsoco
173

git fetch --prune --all

Postando isso como sua própria resposta, pois é uma correção de uma linha, mas se você votar, certifique-se de votar na resposta de @ twalberg acima.

a sugestão de @twalberg para git branch -ame levar no caminho certo; meu colega de trabalho sugeriu git fetch --prune --allpodar todos os galhos mortos de todos os controles remotos, o que é útil ao trabalhar com muitos desenvolvedores com muitos garfos.

Ericsoco
fonte
19
Embora a resposta aceita dê uma boa explicação por que isso acontece, essa resposta apresenta uma solução real para o problema e, portanto, deve ser aceita IMHO.
Patrick Oscity,
3
nomes de ramos mortos ainda estão aparecendo no preenchimento automático.
Fitsyu