小编典典

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

all

在我当前的仓库中,我有以下输出:

$ 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

如何从分支列表中删除“remotes/public/master”?

更新,尝试了git push命令:

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

阅读 198

收藏
2022-03-02

共1个答案

小编典典

您可能需要清理:

git gc --prune=now

或者你可能需要修剪:

git remote prune public

修剪

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

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

但是,似乎这些应该早点清理

git remote rm public

R M

删除名为 的遥控器。删除所有远程跟踪分支和远程配置设置。

因此,可能是您手动编辑了配置文件而没有发生这种情况,或者您有权限问题。

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


建议上下文

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

我怀疑 OP 做了一些事情,导致他们的树处于不一致的状态,导致它的行为有点奇怪,并且git gc需要修复留下的残留物。

通常 git branch -rd origin/badbranch足以 nuking 本地跟踪分支或git push origin :badbranchnuking 远程分支, 通常永远 不需要调用git gc

2022-03-02