我对git很新,但我一直在我设置的远程服务器上玩它,我很确定我理解基础知识。
我刚刚设置了gitlab并将我的一些代码推送到了一个新项目上。我做的是:
原点设置为:
git remote add origin git@1.2.3.4:myproject.git
现在,当我做git branch -a时,我看到了:
* master
remotes/origin/master
当我以前玩的时候,我总是看到:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
据我所知,head是当前签出分支的指针,所以它不应该存在于原点上吗?为什么不创造?
答案 0 :(得分:7)
不要担心这个远程HEAD
。这一行只是原始克隆工作方式的工件,并代表远程HEAD
的状态。
可以将其视为服务器首选的默认分支(即使在远程裸存储库中) - 如果未使用git clone
选项,默认情况下将由客户端-b branch
检出。
您的本地文件.git/refs/remotes/origin/HEAD
现在可能包含字符串ref: refs/remotes/origin/master
。您可以根据需要删除它(不是我建议您这样做,请注意),git branch -a
将不再显示它。
除了使用远程HEAD
作为第一个克隆的默认分支之外,对于远程HEAD
状态永远不重要。您应该只担心真正的远程分支的状态,而不是远程HEAD
,因为它只对远程状态作为其默认选定分支有意义。如果远程是裸存储库,即使在远程也没有多大意义。
当您执行git remote add ...
,git fetch
,git pull
时,您没有看到远程HEAD的原因是因为在这种情况下git不必决定哪个默认远程默认情况下分支到接收。
答案 1 :(得分:0)
您可以通过命令git remote set-head origin -a
进行设置,该命令会自动将origin / HEAD设置为指向相应的远程分支。或使用git remote set-head origin <branch>
指定要指向的远程分支。
答案 2 :(得分:0)
我以这种方式解决我的问题
.git
文件夹中的索引文件。git reset