如何修复过期的git分支 -r(删除幽灵git分支)?

29
$ git branch
  develop
* feature/bug_76
  master
$ git branch -r
  origin/HEAD -> origin/master
  origin/develop
  origin/feature/implement_IBResponder
  origin/master
  origin/origin
  origin/sculptor_strategy

我本地的代码很好。我想删除原始版本上所有的垃圾,所以我尝试:

$ git push origin :origin/sculptor_strategy
error: unable to delete 'origin/sculptor_strategy': remote ref does not exist
error: failed to push some refs to 'git@gitlab:pitbull.git'

我做错了什么?

(猜测) 是本地缓存源代码过期了吗?

答案

结果证明这是一个误导 - 问题在于,我的本地缓存过期了,正如我所怀疑的那样。以下两个答案都可以正常工作。


5
你试过执行git push origin :sculptor_strategy吗? - ConcurrentHashMap
1
相关:https://dev59.com/w2Yq5IYBdhLWcg3wkRUo#14384603 - mvp
1
也可能相关:https://dev59.com/g2025IYBdhLWcg3w3J5H - pmr
@CarlosCampderrós 单独获取将无济于事。他需要使用修剪选项进行获取,否则已删除的引用将不会在本地被删除。 - pmr
@pmr "git fetch -p" 是正确的答案 - 将其添加为答案,我会接受 - 非常感谢。 - kfmfe04
显示剩余6条评论
2个回答

40

您可能没有启用修剪选项进行提取。使用:git fetch --prune


23

使用:

git remote prune origin

删除已经被远程删除的引用。或:

git fetch -p origin

完成同样的事情的功能,或者:

git remote update --prune

我不确定为什么有这么多方法做这件事情。它们应该都是一样的,但在某些 Git 的版本中,有时候其中一种方法可以奏效而另外一种则不能。如果一种方法不管用,尝试另一种或许会有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接