我正在使用一种 frankendebian stretch/sid (我知道,这不是最好的主意;计划很快重新安装)。
选项卡完成适用于 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 完成脚本是否保留了可以以某种方式刷新的旧分支的缓存?如何阻止这些分支在我的制表符完成结果中累积?
我想通了,感谢@PatrickMevzek 的一些温和刺激:
我看到的分支实际上是对已删除的远程分支的引用。要引用上面链接的 SO 线程的最佳答案,
为我修好了。
根据您的设置,还有另一个来源可能看起来像旧的或已删除的分支 - 您的 git-completion 也可能会建议标签以及分支。
我最近被这个愚弄了——我们的 CI/CD 管道标记了我们所有的构建,即使某些分支会在几年前发布和/或删除,这些标记仍然存在。清理遥控器上的旧标签是这里的解决方案(这里有一个指南。
git/contrib/completion/
git(1)在源代码中附带了贡献文件。您的 shell 的脚本处理完成。