【问题标题】:git status says:HEAD detached from specific sha numbergit status 说:HEAD 与特定的 sha 号分离
【发布时间】:2016-09-04 10:29:15
【问题描述】:

我正在一个分支上工作。现在我处于一种我不太了解的状态。我的 git 状态显示:HEAD 已与 25e7afb 分离。

实际上,我确实检查了 ( $ git checkout "sha XXX" ),之后我不断收到警告 HEAD is detached 并提取新的更改。虽然没有任何新的变化要拉。

虽然我在 "sha of XXX" 处重置了结帐和 HEADS,但它仍然显示 HEAD 已分离。

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

谁能帮我解决这个问题?

【问题讨论】:

  • git status 说什么?
  • HEAD 与 25e7afb 分离(这个数字是前两次提交的 SHA ID)
  • 请参阅stackoverflow.com/q/10228760/1256452,但请注意,接受的答案适用于您尚未在 detached-HEAD 状态下进行任何新提交的情况。
  • 如果你已经提交了,你需要签出一个新的分支并在之后进行合并。

标签: git bitbucket


【解决方案1】:

解决方案是在了解结帐的实际作用和工作原理之后。

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

C1
 ^
 |
 master

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

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

C1 <- C2
      ^
      |
      master

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

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

此时,如果您结帐到 C1,则您正在移动 HEAD 指针以指向 C1 并离开(脱离)C2。

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

This 部分教程讨论了结帐和重置。您可能需要从branches 开始阅读。

【讨论】:

    【解决方案2】:

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

      $  git checkout master
    

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

    附:假设我们没有要发布的新更改。

    【讨论】:

      猜你喜欢
      • 2016-06-25
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 2018-06-10
      • 1970-01-01
      • 2021-09-09
      相关资源
      最近更新 更多