如何删除远程Git存储库上的头分支?

如何删除远程Git存储库上的头分支?,git,git-tower,Git,Git Tower,这是服务器上的远程Git存储库 [aaa@web48 proj.git]$ git ls-remote . dfca707432eb53678b37026b160a4bdc7f1ac6c3 HEAD dfca707432eb53678b37026b160a4bdc7f1ac6c3 refs/heads/master 1e09c37443ee758644a712e3c1a8b08b18a1f50d refs/heads/placeholder 我想删除总支/总支。如何在服务器上

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

[aaa@web48 proj.git]$ git ls-remote .
dfca707432eb53678b37026b160a4bdc7f1ac6c3    HEAD
dfca707432eb53678b37026b160a4bdc7f1ac6c3    refs/heads/master
1e09c37443ee758644a712e3c1a8b08b18a1f50d    refs/heads/placeholder
我想删除总支/总支。如何在服务器上或远程执行此操作?我正在使用Tower client。

如果远程分支当前是默认的主分支,则无法删除该分支 远程裸回购上的
HEAD
符号参考代表该回购的默认分支。该回购协议的任何非裸克隆将在克隆后自动签出该分支

因为这是默认设置,所以您不能像通常那样删除它,Git不会让您:

$git推送源--删除主控
远程:错误:默认情况下,删除当前分支被拒绝,因为下一个分支
远程:错误:“git clone”不会导致签出任何文件,导致混淆。
远程:错误:
远程:错误:您可以将“receive.denyDeleteCurrent”配置变量设置为
远程:错误:远程存储库中的“警告”或“忽略”允许删除
远程:错误:当前分支,有或没有警告消息。
远程:错误:
远程:错误:要压制此消息,可以将其设置为“拒绝”。
远程:错误:拒绝删除当前分支:refs/heads/master
到c:/Users/Keoki/Documents/GitHub/bare
! [远程拒绝]主机(禁止删除当前分支)
错误:无法将某些引用推送到“c:/Users/Keoki/Documents/GitHub/bare”
上面的错误消息指出,您可以绕过安全检查,以删除遥控器中当前的
HEAD
分支,但我将向您展示如何更改默认分支,以便您仍然可以保留默认分支,但按照您的意愿删除
master

从命令行更改默认头部分支 如果您有权访问远程,则可以更改远程回购中的默认分支。如果您使用的是GitHub或Bitbucket等托管提供商,它们应该允许您通过其web界面更改默认分支

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

git symbolic-ref HEAD refs/heads/<newDefaultBranch>
您可以使用以下方法确认本地回购已正确更新:

$git分支-r
原点/头部->原点/foo
原产地/食物
来源/主要
现在您可以删除远程服务器上的主分支 现在您已经将远程上的默认
分支更改为主分支以外的分支,您可以在远程上删除它

$git推送源--删除主控
到c:/Users/Keoki/Documents/GitHub/bare
-[已删除]主机
#旧语法
$git推送原点:主
其他参考资料和文件

注意:虽然您确实无法删除默认的HEAD分支,但您可以在Git 2.11(2016年第4季度)之前删除
HEAD
本身

符号参考-d
:不允许移除头部 参见(2016年9月2日)作者。
(于2016年9月12日被合并)

git symbolic ref-d HEAD
”愉快地删除了符号ref,但生成的存储库变为无效存储库。
教导命令禁止移除头部

如果从存储库中删除符号ref
HEAD
,Git将不再存在 认为存储库有效,即使“
git symbolic ref HEAD refs/heads/master
”也无法从该状态恢复
(虽然“
gitinit
”可以,但这肯定表明您所说的是一个“坏”的存储库)

本着与类似的精神,禁止删除
,以避免损坏存储库


HEAD
是远程回购协议上的符号引用,指向远程回购协议上的默认分支。我不确定您是否可以直接删除它或它指向的分支(主分支),但稍后我需要再次检查。这可能就是我想知道的-如何取消分配默认分支以及如何切换默认分支。请提供有关服务器运行情况的信息。您是否将GitHub用作远程服务器?然后,您可以在存储库的设置中切换默认分支,然后
git push origin:master
删除主分支(此时从塔中删除也可以)。删除
HEAD
是不可能的,因为它就像@Cupcake所说的那样,只是一个指向最新提交的链接。@Cupcake我很乐意尝试从服务器上使用命令行解决方案。@Knut我不使用GitHub作为远程工具。它是安装在我的web主机上作为远程主机的Git。最新的提交很奇怪,因为我肯定有一个测试repo,一个我有提交的测试分支,但它不是默认分支,而且在远程上没有头。所以回购协议可能有,也可能没有,对吧?子问题是如何/何时建立此符号链接?第二个问题是如何切换到其他分支。假设一旦创建了头链接,就没有办法删除它。这确实解决了问题,我能够从主链接切换到不同的分支。整个答案是非常广泛和有用的。我还有最后一个问题——事实上,我几乎没有回购协议,其中没有定义总行。在哪一点创建此头部分支?如果已定义,如何取消定义头部?感谢you@Pablo你最好再问一个问题
我现在不能给你一个合适的答案,我以后必须做一些我没有时间做的研究。@Pablo值得一提的是,我认为你可以再次使用它来删除光回购协议中的
引用,但我不确定这是否是一个好主意,我不记得这样做是否有任何负面后果。