我无法在Git上删除远程主分支

111

我需要删除一个主分支,但是这证明是很困难的。我只想清理该分支并重新开始。我正在从dev分支中删除。我希望GitHub上的master分支是干净的。

 # git push origin --delete master

> To https://github.com/mymasterb.git  ! [remote rejected] master
> (deletion of the current branch prohibited) error: failed to push some
> refs to 'https://github.com/mymaster.git'

如何简单地从零开始启动我的主分支?


“Fresh slate” 是什么意思?你想让主分支完全为空,但是你希望所有其他的分支仍然存在吗? - Jon Lin
可能是跨站点重复问题:http://superuser.com/questions/294407/cant-remove-remote-branch-in-git - Ciro Santilli OurBigBook.com
可能是如何将Git远程HEAD指向除“master”以外的其他内容的重复问题。之所以是重复问题,是因为由于它说“禁止删除当前分支”,很明显必须更改当前分支,这正是被接受的答案所解释的。这正是建议的重复问题所解释的内容,包括GitHub解决方案,因为有标签。 - Ciro Santilli OurBigBook.com
3个回答

177
根据Matthew Brett在 "Deleting your master branch" 中的解释,您需要更改GitHub存储库的默认分支

您需要前往 fork 存储库的 GitHub 页面,并单击“设置”按钮。

单击左侧的“分支”选项卡。屏幕顶部附近有一个“默认分支”下拉列表。

从那里选择占位符(占位符是新默认分支的虚拟名称)。

确认要更改默认分支。

现在您可以在命令行中执行以下操作:

git push origin :master

自2012年起,您可以直接在GitHub上删除相同的分支:

GitHub deletion

那是在我最初回答这个问题的一年后于2013年9月宣布的

对于像文档修复、错别字或者只是一个行走的软件编译器这样的小修改,你可以在浏览器中完成很多工作,而不需要将整个存储库克隆到你的计算机上


注意:对于BitBucket,Tum在评论中报告此事:

About the same for Bitbucket

Repo -> Settings -> Repository details -> Main branch

注意: "placeholder" 是与主分支不同的任何其他分支的示例。该想法是将 另一个 分支定义为 Github 存储库的默认分支。 - VonC
@Tampa 我已经编辑了我的答案,以反映不再有绿色勾选标记的事实。 - VonC
1
@VonC,这个能通过命令行完成吗?我正在尝试编写一个脚本来完成相同的操作。为了模拟裸远程存储库,我在我的工作站上有一个裸远程存储库,但它也不允许我切换分支。 - alpha_989
2
@alpha_989 在一个裸仓库中,要更改默认分支,请设置符号引用:https://dev59.com/NHA75IYBdhLWcg3wbofM#3302018 - VonC
3
谢谢!对于 Bitbucket 也是一样。仓库 -> 设置 -> 仓库详情 -> 主分支 - Tum
2
@Tum 谢谢。我已经将您的评论包含在答案中,以增加其可见性。 - VonC

21
为了直接回答问题(因为GitHub不在问题标题中),还要注意超级用户此帖子。编辑:以下是相关部分的答案,稍作修改以便更加清晰地使用方括号:

你被拒绝了,因为你试图删除你的起点当前“签出”的分支。

如果你直接访问仓库,你可以打开一个shell [在裸仓库]目录,并使用老式的git branch来查看origin当前所在的分支。要将其更改为另一个分支,必须使用git symbolic-ref HEAD refs/heads/another-branch


你是否愿意将这个发表为评论而不是答案?超级用户的链接很好。 - zedfoxus
1
@zedfoxus,我愿意考虑 - 但是在主贴下面的添加评论框中写着“避免在评论中回答问题”。我认为我的回答是对字面上提出的问题的回答。但也许我没有理解你的意思? - dave_k_smith
2
我在想,如果这是一条评论,一些链接会留在评论下面,而解释会作为一个回答留下。但最重要的是你的想法。我也接受你的思考方式,让它作为一个回答存在。 - zedfoxus
3
这应该是被接受的答案。也许,@dave_k_smith,你是否愿意用在superuser上发布的信息来详细说明你的答案? - esrehmki

8

最快的方法是将默认分支从主分支更改为其他分支,然后您可以从Web界面中删除主分支。


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