当删除远程 git 分支时“ error: can’t push to un 不能推送到非限定目的地”

我正试图删除一个远程 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

如果你能告诉我怎么摆脱这个分公司,我将不胜感激。

54541 次浏览

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

如果 refs/remotes/origin/my_remote_branch在原始数据库中已经被删除,那么执行 git fetch -p origin使其消失。-p选项告诉 get 删除相应远程中不再存在的任何跟踪分支; 默认情况下,这些分支保存在周围。

找到了 清理旧的远程 Git 分支问题,这个很管用

git branch -r -d origin/my_remote_branch
git branch -r -d origin/my_remote_branch

对我来说还不够。在我不得不转到 server 并直接使用 git 目录(这很危险也很难看)删除分支之前:

ssh mygitserver
su - git
cd /home/git/repositories/my_remote_branch.git/
git  --git-dir=. --work-tree=/tmp/ branch -D my_remote_branch

我在试图删除一个已经被删除的远程分支时遇到了这个问题。所需要的只是一个梅干:

git remote prune origin

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

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

其结果是: error: src refspec branchName matches more than one.这我通过运行 $git tag -d branchName修复。 之后我才能把新的分支推向上游。

我也有同样的问题。 首先去讨论这个问题,但是我不能解决这个问题,直到我看到 https://stackoverflow.com/a/32147743/4209849

它只是增加了一个区分 origin/my-branch-namemy-branch-name的技巧。

具体来说,我应该使用:

git push origin :my_remote_branch

而不是

git push origin :origin/my_remote_branch

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

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

选择一

get push origin --delete <branchName>

选择二

git fetch -p origin
git branch -r -d origin/<branchName>

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

希望对谁有帮助

这对我很有效: 我在 github 用户界面上创建了远程分支,然后将具有相同名称的本地分支推送给它。试试看,以防其他方法不起作用。 另一种方法是在本地创建一个新的分支,然后推送一个空分支,然后挑选提交,再推送到远程。