git 状态 says:HEAD 与特定 sha 编号分离

git status says:HEAD detached from specific sha number

我在一个分支上工作。现在我处于一种我不太明白的状态。我的 git 状态 says:HEAD 与 25e7afb 分离。

实际上,我确实签出 ( $ git 签出 "sha XXX" ),之后我不断收到警告 HEAD is detached 并提取新的更改。虽然没有任何新的更改可以拉取。

尽管我在 "sha of XXX" 重置了结帐和 HEADS,它仍然说 HEAD 已分离。

当我打算推送新提交时,我收到了附加错误。

谁能帮我解决这个问题?

了解结帐的实际作用以及工作原理后,解决方案就出现了。

当您最初创建提交时,git 会自动创建一个具有默认已知名称的分支 master

C1
 ^
 |
 master

如您所见,C1 代表初始提交。有一个指针(分支),它是 master,指向 C1。

当您创建另一个提交时,指针移动到新的提交:

C1 <- C2
      ^
      |
      master

master 现在指向 C2。 C2 有一个父级 C1。每个提交都指向前一个提交。

还有一个指针没有显示在图中。这是 HEAD 指针。 HEAD 指向您正在进行的当前提交。意思是,如果你是 C2,则 HEAD 指向 C2。这可以帮助您轻松地在提交之间跳转。

此时,如果您签出到 C1,则将 HEAD 指针移动到指向 C1 并离开(分离)C2。

因此,在大多数情况下,如果您检出另一个提交,通常在稍后的某个时间点,您会再次检出到最近的提交。

This part of the tutorial discusses checkout and reset. You might need to start reading starting from branches.

我做了以下操作,问题已经解决!

  $  git checkout master

这有助于回到母版(最新版本),不再被分离!

P.S。假设我们没有新的变化。