我已经通过git branch -d branchname
删除了一些本地分支,但它们仍然存在于自动填充中(当我放git checkout
时,然后按tab
键,我看到列表中所有已删除的分支)。
我试图制作git gc
和git prune
,但没有任何变化。
答案 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]
答案 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
,它就为我解决了这个问题。