我正在使用某种弗兰肯德式拉伸/sid(我知道这不是最好的主意;计划很快重新安装)。
Tab 补全适用于 git repo 目录中的 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
但它显示的一些分支不再存在:
:~/project $ git branch
* develop
private-rl_1219_misspelled_locale_zhtw
stable
已删除也会发生这种情况偏僻的分支机构。
这里发生了什么? git 完成脚本是否保留可以以某种方式刷新的旧分支的缓存?如何阻止这些分支在制表符补全结果中累积?
答案1
感谢 @PatrickMevzek 的一些温和的刺激,我明白了:
我看到的树枝实际上是对已删除的远程分支的引用。引用上面链接的 SO 线程中的最佳答案,
$ git remote prune origin
为我修好了。
答案2
根据您的设置,还有另一个可能看起来像旧分支或已删除分支的来源 - 您的 git-completion 也可能会建议标签和树枝一起。
我最近被这个愚弄了 - 我们的 CI/CD 管道标记了我们的所有构建,即使某些分支几年前就被发布和/或删除,标签仍然存在。清理遥控器上的旧标签是这里的解决方案(这里有一个指南。
答案3
git/contrib/completion/
git(1)在源代码中附带了贡献的文件。 shell 的脚本处理完成。