如何从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
上一篇: How do you remove an invalid remote branch reference from Git?
