如何在Github中将开发分支设置为默认分支而不是主分支?
我知道这可以在存储库的管理页面上完成。可以在那里设置另一个默认分支。这就是这个问题的答案 但是我发现(可能是一个bug?)以下内容。如果您的主分支和开发分支完全相同,那么git克隆将不会克隆默认的“开发”分支,而仍然是“主分支”!!如果您将某些内容提交到开发分支,请删除克隆,然后再次克隆,您将获得开发分支 这是Git行为还是Github?这是否可以修复,以使其始终处于开发状态?这是git的“功能” 我刚刚用本地回购进行了测试,而我的第一次回购如何在Github中将开发分支设置为默认分支而不是主分支?,git,github,Git,Github,我知道这可以在存储库的管理页面上完成。可以在那里设置另一个默认分支。这就是这个问题的答案 但是我发现(可能是一个bug?)以下内容。如果您的主分支和开发分支完全相同,那么git克隆将不会克隆默认的“开发”分支,而仍然是“主分支”!!如果您将某些内容提交到开发分支,请删除克隆,然后再次克隆,您将获得开发分支 这是Git行为还是Github?这是否可以修复,以使其始终处于开发状态?这是git的“功能” 我刚刚用本地回购进行了测试,而我的第一次回购测试的头是“develope”: 。。。在test1中
测试的头是“develope
”:
。。。在test1
中克隆的默认分支的名称是master
C:\Users\VonC\Documents\GitHub\test1>git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
请参阅“”:
从克隆回购协议的角度来看,远程原始回购协议上的HEAD
引用了master
和develope
:
C:\Users\VonC\Documents\GitHub\test>git symbolic-ref HEAD
refs/heads/develop
C:\Users\VonC\Documents\GitHub\test1>git ls-remote origin
c215dd28ea8bf9b0c6b522c784b70bbbb3e858a5 HEAD
c215dd28ea8bf9b0c6b522c784b70bbbb3e858a5 refs/heads/develop
c215dd28ea8bf9b0c6b522c784b70bbbb3e858a5 refs/heads/master
确定克隆回购的默认分支的顺序为:
HEAD
引用了refs/heads/master
,并且已经存在
->您将获得一个名为master
的本地分支,从origin/master
HEAD
引用了refs/heads/anotherBranch
并且存在
->您得到一个名为anotherBranch的本地分支,从origin/anotherBranch
奇怪-我也能复制这个。我会把它作为一个bug报告给GitHub…@MarkLongair并不奇怪:git应该是这样工作的。请看下面我的答案。@VonC:好的,那么这是一个git bug,或者至少是一个错误特性。HEAD是一个符号ref,但出于某种原因,它在克隆时抛弃了这种间接性,而只是查找指向对象名的分支?这对我来说没有任何意义,并且产生了一些惊喜,比如发问者发现的情况。@MarkLongairHEAD
这里似乎指的是提交,而不是分支。如果该提交恰好被master
引用,则master
被视为默认分支。如果这是真的,那么它不是一个bug,它是一个“特性”,或者在本例中是一个约定。所有新的拉取请求现在都是针对开发分支而不是主分支的。@EivindGussiåsLøkseth,正如您在参考答案的评论中提到的,这不是只对您的本地回购有效吗?GitHub端的repo不会意识到一个git-remote-set-head
指令。也许你是对的。由于某种原因,我在运行此命令后创建的第一个PR自动定向开发,但现在又有一个新的PR定向主控。不知道为什么它一开始似乎能工作。@EivindGussiåsLøkseth git clone/fetch/pull/push和ls remote是唯一与远程repo通信的命令。其他一切都是您回购协议的本地内容。