如何从自动补全中删除已删除的分支名称?

我用 git branch -d myBranch删除了一个分支。但是,当我在 master 上尝试用 git checkout签出一个新的分支时,myBranch仍然出现在 tab-autocomplete 中。

如何从 git checkout的 tab-autocomplete 中删除名称 myBranch

17799 次浏览

一个可能的原因是,如果远程分支(例如 origin/myBranch)仍然存在,那么 git checkout myBranch将成为 git checkout -b myBranch origin/myBranch的替代品。这是为了方便第一次签出远程分支的常见情况,创建同名的本地跟踪分支。

还有其他的可能性,这取决于您具体使用什么来完成,但这是我首先要检查的事情之一。如果您运行 git branch -a,并且列出了一个 origin/myBranch(或者除 origin之外的一个远程程序) ,那么这很可能是罪魁祸首。

git fetch --prune --all

发布这个作为自己的答案,因为它是一行的修复,但如果你投票,一定要投票给 Twalberg 的回答

Twalberg 对 git branch -a的建议使我走上了正确的道路; 我的同事建议 git fetch --prune --all从所有的远程中删除所有死掉的分支,这在使用大量带有大量分支的开发人员时非常有用。

根据您的设置,还有另一个看起来像旧的或删除的分支的来源-您的 git 完成也可能建议使用 标签和分支。

我最近被这个骗了——我们的 CI/CD 管道标记了我们所有的构建,即使某些分支在几年前就被发布和/或删除了,标记仍然存在。清理远程上的旧标记是这里的解决方案(这里有个向导)。

(我回答了这个 这里也是——不确定它是否算作 StackExchange 上的副本... ?)