git克隆-默认分支

git克隆-默认分支,git,gitlab,Git,Gitlab,从我的gitlab服务器克隆git存储库后,它不会签出master,因为origin/HEAD指向其他分支“origin/foo”。在gitlab中,默认分支设置为master 如何将原点/头部从“原点/foo”移动到“原点/master”,以便进一步的克隆自动检出原点/master 克隆完成后,git remote显示源代码状态: HEAD branch: foo git remote-r秒,用于: origin/HEAD -> origin/foo 我希望HEAD分支指向mast

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

如何将原点/头部从“原点/foo”移动到“原点/master”,以便进一步的克隆自动检出原点/master

克隆完成后,git remote显示源代码状态:

HEAD branch: foo
git remote-r秒,用于:

origin/HEAD -> origin/foo


我希望HEAD分支指向master,不过在gitlab内部,默认分支已经设置为master。

对于这个问题,我认为您需要在远程操作。做一些类似于:

git签出主机


要让HEAD引用master。

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

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

此外,值得补充的是,如果您的客户端git非常旧(即,早于1.8.5,尽管修复程序也已向后移植到1.8.4.3),它可能不会选择正确的分支

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

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


(如果服务器太旧,这也会失败,因为这些旧服务器在协商阶段不接受符号传输选项,但当然GitLab在过去十年中并没有像某些Linux发行版那样陷入困境,我们不会使用CentOname,嗯。)

远程端是裸git,实际上无法使用原始git命令,因为它托管在gitlab上。我必须在客户端执行一些魔术,然后将这些更新发送到远程。@rralf至于本地技巧,我只能想到本地命令别名,即在.gitconfig中设置clone-b master的别名,并使用此别名而不是原始的clone命令。嗯-正如我已经说过的:Gitlab default branch已经设置为masterYes-我知道,设置为master!我只是将它设置为其他值,然后再次将其重置为master。我目前正在克隆它,看看它现在是否工作。好的,更改gitlab默认分支并将其重置回master解决了我的问题。也许你可以在你的答案中加上这个暗示,然后我就接受了。好像是gitlab里面的一些奇怪的虫子…从午餐回来。提示补充道。