Git拒绝删除一个分支。

4

我在这个GitHub存储库上只有一个分支(不是主分支),现在我正在尝试将其重命名,但出现了以下错误:

git push origin :OldName
To git@github.com:user/gitRepo.git
 ! [remote rejected] OldName (refusing to delete the current branch: refs/heads/OldName)
error: failed to push some refs to 'git@github.com:user/gitRepo.git'

这是因为我没有主分支吗?这是我的git branch -a命令结果:
OldName
remotes/origin/HEAD -> origin/OldName
remotes/origin/OldName
3个回答

5
这不是 [git] 的限制,而是 [github] 为您做了额外的安全保护。请更改您在 GitHub 项目中的 [default branch],然后再试一次。
示例 URL(将 [user] 和 [project] 替换为实际值): https://github.com/[user]/[project]/settings/branches

@kboul 这不是一个真实资源的链接。你需要用你自己的用户名和项目名称替换 [user] 和 [project]。 - starlocke
确实。抱歉,我没有注意到[user],只是点击了链接检查。 - kboul
我看到了404错误,这意味着我不是管理员或者没有权限查看此URL? - Mahdiyeh

3
如果git branch -a命令的输出正确,那么你只有一个名为OldName的分支,在GitHub上也只有同名的一个分支。删除这个唯一的分支并没有太多意义,因为这样在仓库中将不会有任何内容(除了可能还有reflog,如果它仍然存在的话)。
具体来说,错误很可能是由于稍微不同的原因导致的。由于OldName分支是GitHub上唯一的分支,很可能也是您仓库的默认分支。GitHub不允许您删除默认分支,因为这意味着浏览您的存储库的人可能无法查看内容。
为了解决这个问题,您可以创建一个具有所需名称的分支,并从那里进行删除操作: 本地操作:
git checkout -b NewName  # create a dummy branch from OldName
git push origin NewName

在GitHub上:

将默认分支更改为NewName

本地(再次):

git push origin :OldName

为了使其正常工作,您还需要在Github项目的设置中更改默认分支,否则,在尝试删除旧分支时会出现相同的错误。 - nbro

0

在从远程 git 仓库中删除默认分支之前,我必须先将其移动到 github 仓库上。在将该分支从默认分支中删除后,我再次运行了以下命令:

git push origin --delete [分支名称] --force

问题得到解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接