【问题标题】:Unable to delete or prune a remote branch with no commits无法删除或修剪没有提交的远程分支
【发布时间】:2012-10-03 16:02:31
【问题描述】:

我不小心创建了一个分支并将其推送到原点。我从另一个分支创建它,但没有提交任何更改,因此它应该与原始分支“相同”。

我想删除分支,所以我先在本地删除它:

git branch -d <branch_name>

然后我想从远程位置删除:

git push origin :<branch_name>

但这给了我错误:

错误:无法推送到不合格的目的地: 目标 refspec 既不匹配远程上的现有 ref,也不匹配 以 refs/ 开头,我们无法根据 来源参考。致命:远端意外挂断

我在 StackOverflow 的另一个线程 (Cannot delete a remote branch created unintentionally) 和其他网站 (git: prune to remove old remote tracking branches) 上找到了有关此错误的信息,但他们提出的解决方案是:

git remote prune origin

对我不起作用。修剪命令正确退出,但是当我git branch -rgit branch -a 时,我仍然看到分支

我也尝试过git remote updategit fetch,但这并没有改变任何东西。

如何从分支列表中删除这个分支?

【问题讨论】:

  • git remote prune 只会在从远程存储库中删除分支后清理您的本地引用。 git ls-remote origin 是否显示分支仍然存在?如果是这样,并且git push origin :&lt;branch_name&gt; 没有删除它,我会尝试使用完全限定的路径名​​:git push origin :refs/heads/&lt;branch-name&gt;。您应该在git ls-remote 的输出中看到完全限定名称。只需复制并粘贴即可。
  • 谢谢@jszakmeister!请参阅我对 poke 答案的评论。

标签: git


【解决方案1】:

试试git fetch --prune origin

否则,您可以手动从本地存储库中删除分支,并查看它是否在 git fetch 上返回(在这种情况下,它没有在远程存储库中删除):

git branch -d -r origin/branch

【讨论】:

  • 谢谢。唯一有效的命令是git branch -d -r origin/branch。我想我现在的问题是:为什么?该命令与我在原始帖子中尝试的所有命令有何不同?
  • 分支回到git fetch了吗?还是现在已经一去不复返了?
  • 其实git fetch之后又回来了.. :/
  • 然后就是你的答案了。显然删除远程存储库上的分支失败(或者它被其他人添加回来),因此,您所有的修剪方法都没有删除您的本地链接。尝试使用git push origin :branch 再次删除远程分支(确保指定准确的名称),如果这不起作用,则可能是远程存储库有问题(或者可能不允许它?)。
猜你喜欢
  • 2023-01-12
  • 2011-05-27
  • 2020-07-29
  • 2013-01-07
  • 2020-09-08
  • 2022-07-03
  • 2011-02-23
  • 2014-06-09
  • 2016-07-08
相关资源
最近更新 更多