5

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

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

  1. 在目录中获取我的所有代码
  2. 混帐初始化
  3. 混帐添加。
  4. git commit -m "初始提交"
  5. git push 起源大师

原点设置的位置:

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

4

3 回答 3

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 ...当你看到远程 HEAD 时,你没有看到远程 HEAD 的原因是因为在这种情况下git fetchgit pullgit 不必决定默认选择哪个默认远程分支。

于 2012-11-28T07:53:05.597 回答
4

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

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

于 2018-08-28T16:06:03.890 回答
0

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

  1. 首先删除文件夹中的索引文件.git
  2. 然后打开终端并输入git reset
于 2020-10-04T04:25:06.467 回答