如何从Git中删除无效的远程分支引用?

在我目前的回购中,我有以下输出:

$ git branch -a
* master
  remotes/origin/master
  remotes/public/master

我想从分支列表中删除remotes/public/master

$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.

另外, git remote的输出很奇怪,因为它没有列出public

$ git remote show 
origin

如何从分支列表中删除“远程/公共/主”?

更新,尝试了git push命令:

$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

您可能需要清理

git gc --prune=now

或者你可能需要修剪

git remote prune public

修剪

删除<名称>下的所有陈旧跟踪分支。 这些陈旧的分支已从<名称>引用的远程存储库中删除,但仍在本地“remotes / <name>”中可用。

使用--dry-run选项,报告将修剪哪些分支,但不实际修剪它们。

不过,看起来这些应该早些时候用清理

git remote rm public 

R M

删除名为<名称>的远程。 远程的所有远程跟踪分支和配置设置均被删除。

所以它可能是你手工编辑你的配置文件,这没有发生,或者你有特权问题。

也许再次运行,看看会发生什么。

建议上下文

如果您查看修订日志,您会注意到我提出了更多“正确”的技术,无论出于何种原因,他们都不想在他们的存储库上工作。

我怀疑OP已经做了一些让他们的树处于不一致的状态,导致它表现得有点奇怪,并且需要git gc来修复留下的残留物。

通常git branch -rd origin/badbranch足够用于git branch -rd origin/badbranch本地跟踪分支,或者git push origin :badbranch用于git push origin :badbranch远程分支,通常你不需要调用git gc


你所需要做的就是

git fetch -p

它会删除所有远程删除的本地分支。

如果你使用的是git 1.8.5+,你可以自动设置它

git config fetch.prune true

要么

git config --global fetch.prune true

git push public :master

这将删除Kent Fredric指出的名为master的远程分支。

列出远程追踪分行:

git branch -r

要删除远程跟踪分支:

git branch -rd public/master
链接地址: http://www.djcxy.com/p/663.html

上一篇: How do you remove an invalid remote branch reference from Git?

下一篇: How do I strip branches from a git repository?