git clone - 默认分支

时间:2016-03-23 23:00:43

标签: git gitlab

从我的gitlab服务器克隆git存储库后,它不会检出master,因为origin / HEAD指向其他某个分支'origin / foo'。在gitlab中,默认分支设置为master。

如何将origin / HEAD从'origin / foo'移动到指向'origin / master',以便进一步克隆自动检出origin / master?

克隆后,git远程显示原点状态:

HEAD branch: foo

git remote -r秒:

origin/HEAD -> origin/foo

我希望HEAD分支指向master,但是 - 在gitlab中 - 默认分支已经设置为master。

3 个答案:

答案 0 :(得分:4)

这只能在服务器端完成。对于GitLab,它在您的项目中完成,设置(左侧边栏中的最后一项),"默认分支" (第三个文本字段)。

Screenshot of GitLab Project Settings page

显然目前存在问题(2016年3月),这意味着GitLab报告的默认分支并不总是与git remote show origin报告的HEAD分支相同。将GitLab默认分支设置为其他任何分支,然后将其设置为master,对@rralf有效。

答案 1 :(得分:2)

除了Paul Hicks' answer之外,值得补充的是,如果你的客户端git非常老(即,在1.8.5之前,虽然修复程序也被反向移植到1.8.4.3),但它可能不会无论如何选择正确的分支。

当服务器的HEAD引用解析为提交ID时,会出现此问题,提交ID也是多个分支的提示。在这些旧版本的git上,clone进程无法理解HEAD -> ...方向,而只是获取HEAD解析的原始提交ID。它还获取每个分支的提交ID,然后它选择一个分支 - 哪个分支基本上是随机的 - 具有该提交ID。

较新的客户端协商符号样式转移,并且每次都获得正确的分支。但是,如果您遇到旧版本,则一种解决方法是确保HEAD解析的ID仅与一个分支相关联。也就是说,对于匹配的每个其他分支,进行虚拟提交,以使该分支的提示不再是相同的ID。

(如果服务器太旧,这也会失败,因为那些旧服务器在协商阶段不接受符号传输选项,但当然GitLab在过去十年中并没有像我们赢得的某些Linux发行版那样停滞不前' t CentOname,ahem。)

答案 2 :(得分:0)

对于这个问题,我认为你需要在远程操作。做类似的事情:

  

git checkout master。

让HEAD引用master。