Estou em uma espécie de estiramento / sid frankendebiano (não é a melhor ideia, eu sei; planejando reinstalar em breve).
A conclusão da tabulação funciona para nomes de branch git em diretórios de repositório git:
:~/project $ git checkout <TAB><TAB>
Display all 200 possibilities? (y or n)
:~/project $ git checkout private-rl_<TAB><TAB>
private-rl_1219_misspelled_locale_zhtw private-rl_1950_scheduler_offset private-rl_bootstrap_rake_tasks
private-rl_1854_ldap_filter_reset private-rl_bootstrap_rake_task
Mas alguns dos ramos que mostra não existem mais:
:~/project $ git branch
* develop
private-rl_1219_misspelled_locale_zhtw
stable
Isso também acontece para ramificações remotas excluídas.
O que está acontecendo aqui? O script de conclusão do git mantém um cache de ramificações antigas que podem ser liberadas de alguma forma? Como posso impedir que essas ramificações se acumulem em meus resultados de conclusão de tabulação?
Eu descobri, graças a alguns estímulos de @PatrickMevzek:
As ramificações que eu estava vendo eram, na verdade, referências a ramificações remotas que já haviam sido excluídas . Para citar a resposta principal do tópico SO vinculado acima,
consertou para mim.
Dependendo de sua configuração, há outra fonte do que pode parecer ramificações antigas ou excluídas - seu git-completion também pode estar sugerindo tags junto com ramificações.
Fui enganado por isso recentemente - nosso pipeline de CI/CD marca todas as nossas compilações e, embora certas ramificações fossem lançadas e/ou excluídas anos atrás, as marcas persistiram. Limpar tags antigas no controle remoto foi a solução aqui ( há um guia aqui .
git(1) vem com arquivos contribuídos
git/contrib/completion/
na fonte. O script para seu shell lida com as conclusões.