Git - 如何从结帐自动完成中删除分支

use*_*054 3 linux git terminal

我已经删除了一些本地分支git branch -d branchname,但它们仍然存在于自动完成中(当我放git checkout,然后tab按键,我看到列表中的所有已删除的分支).

我试图让git gcgit prune,但没有任何变化.

Rus*_*ore 9

TL; DR - 真正的答案:

$ git remote prune origin
Run Code Online (Sandbox Code Playgroud)

稍微详细一点:

git branch -d foo-branch 如果foo-branch未合并到您当前的分支中,将无法删除.

如果它们已经合并,那么清理遥控器上的旧分支也是个好主意.您可以从命令行执行此操作git push origin :foo-branch.

然而,旧的"幽灵"分支foo-branch将会自动完成git checkout.显然git正在缓存遥控器上可用的分支.致电:

$ git remote prune origin
Run Code Online (Sandbox Code Playgroud)

您可以清除git remote上可用分支的本地缓存.

我可以在OSX上重现针对git 2.2.1(可能还有早期版本)的OP问题.


Agi*_*gis 2

如果您确定不需要该分支,可以将其从本地远程中删除,如下所示:

$ git branch -D branchname
$ git push origin :branchname
Run Code Online (Sandbox Code Playgroud)

然后它将停止出现在自动完成结果中。

  • 我明白了,我只需启动“git Remote prune origin”即可更新本地存储库。无论如何,感谢您的回答! (4认同)