147

我曾经git branch -d myBranch删除一个分支。但是,当我在 master 上并尝试使用 签出新分支时git checkoutmyBranch仍然出现在选项卡自动完成中。

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

4

3 回答 3

231

git fetch --prune --all

将其发布为自己的答案,因为它是单行修复,但如果您投票,请务必投票支持上述@twalberg 的答案。

@twalberg 的建议让git branch -a我走上了正确的道路;我的同事建议git fetch --prune --all修剪所有遥控器上的所有死枝,这在与许多具有大量分叉的开发人员一起工作时很有用。

于 2015-06-26T16:08:00.497 回答
96

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

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

于 2013-07-29T22:59:54.643 回答
0

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

我最近被这个愚弄了——我们的 CI/CD 管道标记了我们所有的构建,即使某些分支将在几年前发布和/或删除,这些标记仍然存在。清理遥控器上的旧标签是这里的解决方案(这里有一个指南)。

(我也在这里回答了这个问题- 不确定它是否像在 StackExchange 上那样算作重复......?)

于 2022-01-27T13:55:07.513 回答