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

Joh*_*man 105 git

git branch -d myBranch以前删除了一个分支.但是,当我在掌握并尝试签出新分支时git checkout,myBranch仍然会出现在tab-autocomplete中.

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

eri*_*oco 150

git fetch --prune --all

将此作为自己的答案发布,因为它是一个单行修复,但如果你投票,一定要投票给@ twalberg的答案.

@ twalberg建议让git branch -a我走上正轨; 我的同事建议git fetch --prune --all修剪掉所有遥控器上的所有死枝,这对于许多带有大量叉子的开发人员来说非常有用.

  • 虽然接受的答案给出了一个很好的解释,为什么会发生这种情况,这个答案提出了一个问题的实际解决方 (15认同)
  • 死分支名称仍然显示在自动完成中。 (4认同)

twa*_*erg 67

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

还有其他可能性,取决于你用于完成的具体内容,但这是我要检查的第一件事.如果你运行git branch -a,并且有一个origin/myBranch列出的(或者一个远程以外的origin,如果你有这样的话),那么这可能是罪魁祸首.

  • @JohnHoffman这应该是安全的,但我认为更好的方法是`git fetch --prune origin`.这将清除遥控器上不再存在的所有本地跟踪分支. (86认同)
  • `git branch -a`让我走上正轨; 我的同事建议使用`git fetch --prune --all`来修剪所有遥控器上的所有死枝,这对于许多带有大量叉子的开发人员来说非常有用. (4认同)
  • @twalberg我不相信简单地删除本地和远程分支就足以摆脱自动完成中的所有旧分支.我相信你_need_到`git fetch --prune origin`来获取远程分支的本地引用,以便在自动完成时消失.将评论从评论转移到答案可能会很好.无论如何,感谢您的回复,因为它帮助了我! (3认同)
  • 谢谢!这似乎是罪魁祸首.`origin/myBranch`仍然存在.如果我在Github上删除了'myBranch`分支(通过在线界面),我可以安全地调用`git branch -d origin/myBranch`来删除那个远程分支吗? (2认同)