没有遥控器/原点/ HEAD与gitlab

时间:2012-11-28 07:13:32

标签: git gitlab

我对git很新,但我一直在我设置的远程服务器上玩它,我很确定我理解基础知识。

我刚刚设置了gitlab并将我的一些代码推送到了一个新项目上。我做的是:

  1. 在目录中获取我的所有代码
  2. git init
  3. git add。
  4. git commit -m“初始提交”
  5. git push origin master
  6. 原点设置为:

    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是当前签出分支的指针,所以它不应该存在于原点上吗?为什么不创造?

3 个答案:

答案 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 fetchgit pull时,您没有看到远程HEAD的原因是因为在这种情况下git不必决定哪个默认远程默认情况下分支到接收。

答案 1 :(得分:0)

您可以通过命令git remote set-head origin -a进行设置,该命令会自动将origin / HEAD设置为指向相应的远程分支。或使用git remote set-head origin <branch>指定要指向的远程分支。

另请参阅:https://stackoverflow.com/a/8841024/1851492

答案 2 :(得分:0)

我以这种方式解决我的问题

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