我对git很新,但我一直在我设置的远程服务器上玩它,我很确定我理解基础知识.
我刚刚设置了gitlab并将我的一些代码推送到了一个新项目上.我做的是:
原产地设立时:
git remote add origin git@1.2.3.4:myproject.git
Run Code Online (Sandbox Code Playgroud)
现在,当我做git branch -a时,我看到:
* master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
而在我以前玩的时候,我总是看到:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
我知道头是当前检出的分支的指针,所以它不应该存在于原点上吗?它为什么不创造?
不用担心这个遥控器HEAD.这一行只是原始克隆工作方式的神器,代表遥控器的状态HEAD.
它可以被视为服务器首选的默认分支(即使在远程裸存储库中) - git clone如果-b branch未使用选项,默认情况下将由客户端检出.
您的本地文件现在.git/refs/remotes/origin/HEAD可能包含字符串ref: refs/remotes/origin/master.如果你愿意,你可以删除它(不是我建议你这样做,请注意),并且git branch -a不再显示它.
除了使用remote HEAD作为第一个克隆的默认分支之外,对于你来说,远程状态HEAD永远不重要.您应该只担心真正的远程分支的状态,而不是远程分支,HEAD因为它只对远程状态作为其默认选定分支有意义.如果远程是裸存储库,即使在远程也没有多大意义.
为什么你没有看到你这么做的时候远程端的原因git remote add ...,git fetch,git pull是因为在这种情况下的git没有做出决定哪个默认的远程分支默认皮卡.