【发布时间】:2020-03-06 07:37:53
【问题描述】:
这是我的 GitHub 存储库中一些远程分支的列表:
$ git branch -a
warning: ignoring broken ref refs/remotes/remote/HEAD
* master
origin
restoration-effort2
remotes/origin/master
remotes/remote/master
remotes/remote/carousel
remotes/bridgent/animate
remotes/bridgent/enlarged-hover
remotes/bridgent/master
remotes/bridgent/Rayom-generator-app
remotes/bridgent/scripts
remotes/bridgent/bridgent-carousel
我在这里的意图/目标是删除所有以“remotes”开头的那些(但不是两个“master”)。
当我尝试删除它们时,我得到:
error: unable to delete 'remote/bridgent-carousel': remote ref does not exist
error: failed to push some refs to 'git@github.com:Nostrad/<project_name>.git'
所以我谷歌“错误:无法删除远程引用不存在”,它出现了一个标题为 Git says remote ref does not exist when I delete remote branch 的 SO 问题/答案
我发现的另一个指南(包括类似的建议,但合并成一篇有用的博客文章)可以在 here 找到。
这两个指南建议使用如下命令:
$ git branch -D animate
$ git push origin --delete remotes/Rayom/animate
$ git fetch --prune
$ git push origin --delete <branch_name>
在我的例子中,这些命令帮助我消除了许多不再需要的旧分支,但是这些命令不会删除剩余的分支(如上所列)。输入这些命令(包括一些变体)会产生以下输出:
$ git push origin --delete bridgent/Rayom-generator-app
error: unable to delete 'bridgent/Rayom-generator-app': remote ref does not exist
error: failed to push some refs to 'git@github.com:Nostrad/<project_name>.git'
$ git push origin --delete remote/bridgent-carousel
error: unable to delete 'remote/bridgent-carousel': remote ref does not exist
error: failed to push some refs to 'git@github.com:Nostrad/<project_name>.git'
$ git push origin --delete Rayom-generator-app
error: unable to delete 'Rayom-generator-app': remote ref does not exist
error: failed to push some refs to 'git@github.com:Nostrad/<project_name>.git'
$ git push origin :Rayom-generator-app
error: unable to delete 'Rayom-generator-app': remote ref does not exist
error: failed to push some refs to 'git@github.com:Nostrad/<project_name>.git'
$ git branch --remote
<no output>
$ git remote prune origin --dry-run
<no output>
$ git remote prune origin
<no output>
所以我对你们所有人的主要问题是:如何删除remotes/bridgent/Rayom-generator-app 和所有类似的远程分支?
还值得注意的是,当我将 origin 替换为 remote 时,我得到了类似的输出,但这里的不同之处在于远程引用了以前的 git 项目的名称(不再存在):
$ git push remote --delete bridgent/Rayom-generator-app
error: unable to delete 'bridgent/Rayom-generator-app': remote ref does not exist
error: failed to push some refs to 'git@github.com:Nostrad/<**former**_project_name>.git'
$ git push remote --delete remote/bridgent-carousel
error: unable to delete 'remote/bridgent-carousel': remote ref does not exist
error: failed to push some refs to 'git@github.com:Nostrad/<**former**_project_name>.git'
$ git push remote :Rayom-generator-app
error: unable to delete 'Rayom-generator-app': remote ref does not exist
error: failed to push some refs to 'git@github.com:Nostrad/<**former**_project_name>.git'
【问题讨论】:
-
这个错误是因为
origin远程(大概是你的GitHub repo)中没有任何名为bridgent/Rayom-generator-app的分支。相反,在名为bridgent的远程中有一个名为Rayom-generator-app的分支,它指向其他存储库的 URL。