首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何删除远程Git仓库上的HEAD分支?

如何删除远程Git仓库上的HEAD分支?
EN

Stack Overflow用户
提问于 2014-07-13 16:47:53
回答 1查看 16.9K关注 0票数 8

这是服务器上的远程Git存储库

代码语言:javascript
运行
复制
[aaa@web48 proj.git]$ git ls-remote .
dfca707432eb53678b37026b160a4bdc7f1ac6c3    HEAD
dfca707432eb53678b37026b160a4bdc7f1ac6c3    refs/heads/master
1e09c37443ee758644a712e3c1a8b08b18a1f50d    refs/heads/placeholder

我想删除头/主分支。如何在服务器上或远程执行此操作?我使用的是塔式客户端。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-14 01:25:11

如果远程分支当前是默认的头分支,则不能将其删除

远程裸存储库上的HEAD符号引用表示该存储库的默认分支。该存储库的任何非裸克隆将在克隆之后自动签出该分支。

因为这是默认设置,你不能像往常一样直接删除它,Git不允许这样做:

代码语言:javascript
运行
复制
$ git push origin --delete master

remote: error: By default, deleting the current branch is denied, because the next
remote: error: 'git clone' won't result in any file checked out, causing confusion.
remote: error:
remote: error: You can set 'receive.denyDeleteCurrent' configuration variable to
remote: error: 'warn' or 'ignore' in the remote repository to allow deleting the
remote: error: current branch, with or without a warning message.
remote: error:
remote: error: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/master
To c:/Users/Keoki/Documents/GitHub/bare
 ! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to 'c:/Users/Keoki/Documents/GitHub/bare'

上面的错误消息指出,无论如何您都可以绕过安全检查来删除遥控器中的当前HEAD分支,但我将向您展示如何更改默认分支,以便您仍然可以保留默认分支,但可以按您希望的方式删除master

从命令行更改默认的HEAD分支

如果您有权访问远程,则可以更改远程存储库中的默认分支。如果你使用的是像GitHub或Bitbucket这样的主机提供商,他们应该允许你通过他们的web界面来更改默认分支。

因此,如果您有权访问遥控器,请使用以下命令更改符号引用HEAD所指向的分支:

代码语言:javascript
运行
复制
git symbolic-ref HEAD refs/heads/<newDefaultBranch>

更改GitHub或Bitbucket上的默认HEAD分支

正如我在上一节中提到的,如果您使用GitHub或Bitbucket等托管提供程序,您可以通过web界面更新远程存储库中的默认HEAD分支。

GitHub

转到存储库的Settings选项卡,您将在顶部看到默认的分支设置,

Bitbucket

转到存储库的Settings选项卡,您将看到靠近中间的默认分支设置,

将本地克隆的引用更新为远程数据库中的默认分支

一旦您更新了远程裸存储库中的默认分支,您将需要更新该存储库的本地克隆认为远程存储库中的默认HEAD分支所指向的位置。您可以使用以下命令完成此操作

代码语言:javascript
运行
复制
git remote set-head <remote> --auto

# Or shorter
git remote set-head <remote> -a

您可以使用以下命令确认本地存储库是否已正确更新

代码语言:javascript
运行
复制
$ git branch -r
  origin/HEAD -> origin/foo
  origin/foo
  origin/master

现在,您可以删除远程上的主分支

现在,您已经将远程上的默认HEAD分支更改为主分支之外的其他分支,您将能够在远程上将其删除,

代码语言:javascript
运行
复制
$ git push origin --delete master

To c:/Users/Keoki/Documents/GitHub/bare
 - [deleted]         master

# Older syntax
$ git push origin :master

其他参考资料和文档

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24720975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档