如何从自动完成中删除已删除的分支名称?

我用git branch -d myBranch来删除一个分支。 然而,当我在主,并尝试签出一个新的分支与git checkoutmyBranch仍然出现在选项卡自动完成。

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

一个可能的原因是,如果一个远程分支(例如origin/myBranch )仍然存在,那么git checkout myBranch将成功替代git checkout -b myBranch origin/myBranch 。 这是第一次为远程分支结帐的常见情况提供便利,创build一个名称相同的本地跟踪分支。

还有其他的可能性,取决于你正在使用什么来完成,但这是我要检查的第一件事情之一。 如果你运行git branch -a ,并且列出了一个origin/myBranch (或者一个远程源而不是远程origin ,如果有的话),那么这可能是一个罪魁祸首。

git fetch --prune --all

作为自己的答案,因为这是一个单行修正,但如果你投票一定要投票@ twalberg的答案上面。

@ twalberg的build议git branch -a带领我在正确的轨道上; 我的同事build议git fetch --prune --all从所有的遥控器中git fetch --prune --all所有的死树枝,这在与很多叉子工作的时候很有用。

这可能不是这样做,这是你的shell完成命令,因为你曾经使用过一次。

您可以通过inputhistory或编辑~/.bash_history来查看历史history 。 您可以从~/.bash_history文件编辑历史logging,或者您可以inputhistory ,然后使用git checkout myBranch获取行号,然后使用history -d {line number here} 。 作为最后的手段,您可以使用history -c命令彻底查杀历史logging。