【问题标题】:No remotes/origin/HEAD with gitlabgitlab 没有遥控器/来源/HEAD
【发布时间】:2012-11-28 07:13:31
【问题描述】:

我对 git 很陌生,但我一直在我设置的远程服务器上玩弄它,我很确定我了解基本知识。

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

  1. 在一个目录中获取我所有的代码
  2. git 初始化
  3. git 添加。
  4. git commit -m "初始提交"
  5. git push origin master

原点的设置位置:

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

【问题讨论】:

    标签: git gitlab


    【解决方案1】:

    不用太担心这个遥控器HEAD。这条线只是原始克隆工作方式的产物,代表远程 HEAD 的状态。

    它可以被视为服务器首选的默认分支(即使在远程裸存储库上) - 如果未使用 -b branch 选项,默认情况下它将由您的客户端 git clone 签出。

    您的本地文件.git/refs/remotes/origin/HEAD 现在可能包含字符串ref: refs/remotes/origin/master。您可以根据需要删除它(我不建议这样做,请注意),git branch -a 将不再显示它。

    除了使用远程HEAD 作为第一次克隆的默认分支之外,远程HEAD 的状态无关紧要。您应该只担心真正远程分支的状态,而不是远程HEAD,因为它只对远程状态作为其默认选择的分支有意义。如果 remote 是裸存储库,即使在 remote 上也没有多大意义。

    当您执行git remote add ...git fetchgit pull 时,您没有看到远程 HEAD 的原因是因为在这种情况下,git 不必决定默认拾取哪个默认远程分支。

    【讨论】:

      【解决方案2】:

      您可以通过命令git remote set-head origin -a 设置它,它会自动设置 origin/HEAD 以指向适当的远程分支。或者使用git remote set-head origin <branch>指定一个远程分支指向。

      另见:https://stackoverflow.com/a/8841024/1851492

      【讨论】:

        【解决方案3】:

        我就是这样解决我的问题

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

        【讨论】:

          猜你喜欢
          • 2012-07-30
          • 2019-11-22
          • 2018-06-25
          • 1970-01-01
          • 2019-11-27
          • 2015-01-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多