我正在尝试使用
删除远程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
关于如何摆脱这个分支的任何想法都将不胜感激。
答案 0 :(得分:263)
本地存储库中存在refs/remotes/origin/my_remote_branch
这一事实并不意味着refs/heads/my_remote_branch
远程存储库中存在origin
。
如果git fetch -p origin
已被删除,refs/remotes/origin/my_remote_branch
会使-p
消失。 {{1}}选项告诉fetch删除相应遥控器中不再存在的任何跟踪分支;默认情况下它们会被保留。
答案 1 :(得分:55)
找到问题cleaning up old remote git branches,这就是诀窍
git branch -r -d origin/my_remote_branch
答案 2 :(得分:11)
我尝试删除已删除的远程分支时遇到了这个问题。所需要的只是修剪:
git remote prune origin
答案 3 :(得分:4)
尝试以下两个选项强制删除远程分支
选项1
get push origin --delete <branchName>
选项2
git fetch -p origin
git branch -r -d origin/<branchName>
答案 4 :(得分: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
答案 5 :(得分:1)
对我来说问题是,这是我在github上的默认分支。我更改了默认分支,然后删除操作成功。
希望对某人有帮助
答案 6 :(得分:0)
出现同样的问题,我手动编辑了./.git/config
文件,其中包括:
[branch "branchName"]
remote = origin
merge = refs/heads/branchName
导致:error: src refspec branchName matches more than one.
我通过运行$git tag -d branchName
来修复此问题。
之后,我能够将新分支推向上游。
答案 7 :(得分:0)
我有类似的问题。 首先参加了这个讨论,但是在看到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
这至少解决了我的问题,希望它也能帮助别人。
答案 8 :(得分:0)
这对我有用: 我在github UI上创建了远程分支,然后推送了具有相同名称的本地分支。尝试以防其他方式不起作用。 其他方式是在本地创建一个新分支并推送一个空分支,然后樱桃选择你的提交并再次推送到你的遥控器。