144

我正在尝试删除一个远程git分支

git push origin :my_remote_branch

并得到:

error: unable to push to unqualified destination: my_remote_branch
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@example.com:/myrepo'

这些是我目前的分支机构

git branch -a
* develop
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/my_remote_branch

git branch -r --merged
  origin/HEAD -> origin/master
  origin/develop
  origin/master

任何关于我如何摆脱这个分支的想法都将不胜感激。

4

9 回答 9

281

存在于本地存储库中的事实refs/remotes/origin/my_remote_branch并不意味着refs/heads/my_remote_branch存在于origin远程存储库中。

如果它已经在原点被删除,请执行此git fetch -p origin操作。refs/remotes/origin/my_remote_branch-p选项告诉 fetch 删除相应遥控器中不再存在的任何跟踪分支;默认情况下,它们被保留。

于 2012-04-24T07:11:57.430 回答
61

发现清理旧远程 git 分支的问题,这成功了

git branch -r -d origin/my_remote_branch
于 2012-04-24T15:54:27.320 回答
12

我在尝试删除已删除的远程分支时遇到了这个问题。所需要的只是一个修剪:

git remote prune origin
于 2014-03-31T09:05:54.897 回答
5

尝试以下两个选项来强制删除远程分支

选项1

get push origin --delete <branchName>

选项 2

git fetch -p origin
git branch -r -d origin/<branchName>
于 2017-01-06T09:51:47.580 回答
3
git branch -r -d origin/my_remote_branch

对我来说还不够。在我不得不去服务器并直接使用 git 目录(这既危险又丑陋)来删除分支之前:

ssh mygitserver
su - git
cd /home/git/repositories/my_remote_branch.git/
git  --git-dir=. --work-tree=/tmp/ branch -D my_remote_branch
于 2014-03-06T07:50:34.510 回答
2

对我来说,问题是,这是我在 github 上的默认分支。我更改了默认分支,然后删除操作成功。

希望对某人有所帮助

于 2017-11-08T18:18:17.853 回答
1

我有类似的问题。首先进行了这个讨论,但是直到我看到https://stackoverflow.com/a/32147743/4209849之前我无法解决问题。

它只是添加了一个关于区分origin/my-branch-name和的提示my-branch-name

具体来说,我应该使用:

git push origin :my_remote_branch

代替

git push origin :origin/my_remote_branch

这至少解决了我的问题,希望它也能帮助其他人。

于 2016-09-24T19:41:57.993 回答
0

有同样的问题,我手动编辑了我的./.git/config文件以包括:

[branch "branchName"]
remote = origin
merge = refs/heads/branchName

这导致:error: src refspec branchName matches more than one.我通过运行来解决这个问题$git tag -d branchName。之后,我能够将新分支推送到上游。

于 2015-08-12T17:06:41.810 回答
0

这对我有用:我在 github UI 上创建了远程分支,然后推送了与它同名的本地分支。如果其他方法不起作用,请尝试一下。另一种方法是在本地创建一个新分支并推送一个空分支,然后选择您的提交并再次推送到您的远程。

于 2018-05-29T10:07:50.900 回答