Git拒绝删除分支

时间:2016-07-11 15:10:40

标签: git github

我在这个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 个答案:

答案 0 :(得分:4)

如果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

答案 1 :(得分:3)

这不是[git]限制,但是[github]为你做了额外的理智保护。更改你的GitHub项目中的[默认分支],然后重试。

示例网址(更改[用户]和[项目]):

https://github.com/[user]/[project]/settings/branches

答案 2 :(得分:0)

在从远程 git 存储库中删除它之前,我必须移动 github 存储库上的默认分支。从默认分支中删除该分支后,我(再次)运行了命令: git push origin --delete [分支名称] --force

问题解决了。