Gitlab中没有remotes/origin/HEAD

5

我对git还不太熟悉,但我已经在我搭建的远程服务器上试验过,相信我理解了基本原理。

我刚刚设置了Gitlab,并将我的一些代码推送到了一个新项目。我的操作如下:

  1. 将所有代码放在一个目录中
  2. git init
  3. git add .
  4. git commit -m "Initial commit"
  5. git push origin master

其中origin是这样设置的:

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是指当前检出的分支的指针,那么它不应该存在于origin上吗?为什么没有被创建?

3个回答

7
不要过于担心远程的 HEAD。这一行只是原始克隆方式的副产品,代表了远程 HEAD 的状态。
它可以被视为服务器首选的默认分支(即使在远程裸库中也是如此)——如果没有使用 -b 分支选项,则你的客户端 git clone 默认会检出它。
你本地的文件 .git/refs/remotes/origin/HEAD 现在可能包含字符串 ref: refs/remotes/origin/master。如果你想要删除它(我并不建议这样做),git branch -a 就不会再显示它了。
除了将远程 HEAD 用作第一次克隆的默认分支之外,在你关注远程 HEAD 的状态之前,应该先关注真正的远程分支状态。对于远程状态而言,它只有在其默认选择的分支上才有意义。如果远程是裸库,那么即使在远程上也没有太多意义。
你在运行 git remote add ...、git fetch 和 git pull 时没有看到远程 HEAD 的原因是在这种情况下,git 不必决定默认选择哪个远程分支。

4
您可以通过命令git remote set-head origin -a来设置它,这将自动将origin/HEAD设置为指向适当的远程分支。或者使用git remote set-head origin <branch>来指定一个要指向的远程分支。
另请参见:https://dev59.com/tWox5IYBdhLWcg3w_ZR0#8841024

0

我用以下方法解决了我的问题

  1. 首先删除 .git 文件夹中的索引文件。
  2. 然后打开终端并输入 git reset

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接