这是服务器上的远程Git存储库
[aaa@web48 proj.git]$ git ls-remote .
dfca707432eb53678b37026b160a4bdc7f1ac6c3 HEAD
dfca707432eb53678b37026b160a4bdc7f1ac6c3 refs/heads/master
1e09c37443ee758644a712e3c1a8b08b18a1f50d refs/heads/placeholder
我想删除HEAD / master分支。我怎么能在服务器上或远程执行此操作?我正在使用Tower客户端。
答案 0 :(得分:7)
远程裸仓库上的HEAD
符号引用表示该仓库的默认分支。该回购的任何非裸克隆将在克隆后自动检出该分支。
因为它是默认设置,所以您不能像通常一样删除它,Git不会让您:
$ 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
。
如果您有权访问远程,则可以更改远程仓库中的默认分支。如果您正在使用GitHub或Bitbucket等托管服务提供商,则应允许您通过其网络界面更改默认分支。
因此,如果您有权访问远程,请使用以下命令更改符号引用HEAD
指向的分支:
git symbolic-ref HEAD refs/heads/<newDefaultBranch>
正如我在上一节中已经提到的,如果你使用像GitHub或Bitbucket这样的托管服务,你可以通过网络界面更新远程仓库中的默认HEAD
分支。
转到您的回购设置标签,您会在顶部看到默认的分支设置,
进入您的回购设置标签,您将看到中间附近的默认分支设置,
一旦您更新了远程裸仓库中的默认分支,您就需要更新该仓库的本地克隆认为远程中的默认HEAD
分支所指向的位置。你可以用
git remote set-head <remote> --auto
# Or shorter
git remote set-head <remote> -a
您可以使用
确认本地仓库已正确更新$ git branch -r
origin/HEAD -> origin/foo
origin/foo
origin/master
现在您已将遥控器上的默认HEAD
分支更改为主分支以外的其他分支,您可以在遥控器上删除它,
$ git push origin --delete master
To c:/Users/Keoki/Documents/GitHub/bare
- [deleted] master
# Older syntax
$ git push origin :master
答案 1 :(得分:1)
注意:虽然你确实无法删除默认的HEAD分支,但是在Git 2.11(2016年第4季度)删除HEAD
之前你可以!
symbolic-ref -d
:不允许删除HEAD commit 12cfa79见Junio C Hamano (gitster
)(2016年9月2日)
(Junio C Hamano -- gitster
--合并于commit d1de693,2016年9月12日)
&#34;
git symbolic-ref -d HEAD
&#34;愉快地删除符号引用,但生成的存储库变为无效的存储库 教导命令禁止移除HEAD。如果从存储库中删除symbolic-ref
HEAD
,则不再使用Git 认为存储库有效,甚至&#34;git symbolic-ref HEAD refs/heads/master
&#34;将无法从该州恢复 (虽然&#34;git init
&#34;可以,但这肯定表明你正在谈论一个破坏的&#34;存储库)。本着与afe5d3d ("symbolic ref: refuse non-ref targets in HEAD", 2009-01-29)类似的精神,禁止删除
HEAD
以避免破坏存储库。