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

时间:2014-03-03 13:12:18

标签: linux git terminal

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

我试图制作git gcgit prune,但没有任何变化。

6 个答案:

答案 0 :(得分:9)

TL; DR - 真正的答案:

$ git remote prune origin

稍微详细一点:

如果foo-branch未合并到您当前的分支中,

git branch -d foo-branch将无法删除。

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

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

$ git remote prune origin

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

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

答案 1 :(得分:2)

如果您确定您不想要分支,可以将其从本地中移除,如下所示:

$ git branch -D branchname
$ git push origin :branchname

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

答案 2 :(得分:0)

您可能已尝试删除unmerged分支,因此git branch -d branchname尚未将其删除。 您可以检查分支是否仍然存在:

git branch -a

如果您非常确定要删除〜分支even if is not已合并`,您可以强制删除

git branch -D branchname

答案 3 :(得分:0)

我遇到了这个问题,以前的解决方案对我不起作用。事实证明,我在repo中有一个与旧的已删除分支同名的标记。您可以使用以下命令删除标记:

git tag -d [tagname]

要远程删除它:

git push origin :refs/tags/[tagname]

感谢https://nathanhoad.net/how-to-delete-a-remote-git-tag

答案 4 :(得分:0)

请注意,在Git 2.13(2017年第2季度)中推送分支删除(git push origin :branchname)更容易,因为完成脚本学会完成&#34; git push --delete b<TAB>&#34; (完成要删除的分支名称)。

commit 723c1d5Ævar Arnfjörð Bjarmason (avar)(2017年4月22日) (由Junio C Hamano -- gitster --合并于commit f70b541,2017年4月26日)

答案 5 :(得分:0)

我意识到这真的很老了,但我刚刚遇到了这个问题,就我而言,我修剪了 origin 中的分支,但没有修剪 origin-http 中的分支。

>

我通常不使用 http 进行克隆,因此这通常不是问题,但是...很好。

一旦我做了git remote prune origin-http,它就为我解决了这个问题。