什么决定从git裸存储库克隆时的默认分支

时间:2014-11-12 21:26:00

标签: git branch

我尝试使用yum install中的git 1.8.3.1从git bare repo克隆时更改默认分支。我一直认为这样做的方法是更改​​远程仓库的HEAD文件中的引用,并且几个SO answers似乎证实了这一点。

但是,我在远程裸仓库中找到HEAD的值,使无效。即使我的远程仓库在HEAD中具有此值:

ref: refs/heads/secondbranch
当我克隆时,我仍然默认为firstbranch分支!有什么想法在这里发生了什么?该信息还可以存储在哪里?

1 个答案:

答案 0 :(得分:3)

旧版本的git在获取和克隆时不会发送“默认分支”。相反,它们发送当前HEAD引用的对象ID,以及其他引用的对象ID。如果HEAD的对象ID与另一个引用的对象ID相同,则将HEAD设置为指向该引用。 (如果没有匹配,您将处于分离的HEAD状态。)

但是,如果您有多个分支指向同一个提交,则消歧逻辑是模糊的。它更喜欢名为master的分支,然后它将简单地选择它首先看到的分支。

别笑了,我很认真。

这在Git 1.8.4.3修正了。