【问题标题】:Can't 'reattach' detached HEAD git无法“重新附加”分离的 HEAD git
【发布时间】:2016-11-01 20:22:26
【问题描述】:

我有一个分支 bug-fix 被另一个分支 develop 切断

在将我从bug-fix 的更改合并到develop 之后,我通过github 删除了分支,但是我相信我在删除它时仍然签入了该分支。

我在分支bug-fix也有一个未跟踪的文件

bug-fix 据称被删除后,我查看了develop 并看到了HEAD detached at develop

这是我尝试修复分离头部的所有方法:

1) 首先,当我运行 git branch 时,被删除且不再出现在 github 上的分支 bug-fix 仍然出现 所以我尝试做git fetch 来更新它。仍然出现

2) 我检查了bug-fix 并删除了未跟踪的文件

3) 我尝试创建一个新分支temp 然后删除它

【问题讨论】:

  • Git 本身通常不会让您删除您所在的分支,因为这太令人困惑了。如果这发生在某些 GUI 中,而不是在命令行中,则意味着 GUI 已损坏。但在任何情况下,您都应该能够 git checkout 任何 real 分支,并且您将不再有一个分离的 HEAD。请注意,git fetch 永远不会删除任何您自己的 分支。

标签: git github branch git-detached-head


【解决方案1】:

如果你看到文字字符串:

HEAD detached at develop

(例如,在git status 输出中),这意味着名称develop 不是分支。 (更准确地说,它不是一个分支名称——术语“分支”在 Git 中是模棱两可的。参见What exactly do we mean by "branch"?

例如,在 Git 的这个 Git 存储库中,如果我运行:

$ git checkout v2.10.0
Note: checking out 'v2.10.0'.
[snip]
HEAD is now at 6ebdac1... Git 2.10
$ git status
HEAD detached at v2.10.0
nothing to commit, working tree clean

这是因为名称v2.10.0 是一个标签,而不是一个分支。

回到master一个分支名称)我只是:

$ git checkout master
Previous HEAD position was 6ebdac1... Git 2.10
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

从长远来看,Git 中的分支名称实际上并不是很重要。在短期内(当你工作时)它们很重要也很有用,但最终像fix-bug-1234test-new-feature 这样的分支要么成功,要么被纳入长期开发或release 分支并因此被删除,或者它被证明是失败的并且被完全删除,或者被“忽略合并”以将其终止为死胡同,然后将其名称删除。

重要的是提交

在 Git 中,唯一真正重要的是提交本身。

分支名称只是作为查找提交的一种方式。标签名称也是如此。每个名称都可以让 Git 找到 一个 提交——该名称存储了像 6ebdac1... 这样的大而丑陋的散列——提交本身让 Git 可以找到更早的提交。

branch 名称和 tag 名称之间的主要区别在于分支名称 supposed 自动 在分支上进行新提交时移动。为此,git checkout <em>branch-name</em> 将您“置于”分支上,以便 Git 在您运行 git commit 时知道移动该分支。

任何其他名称,Git 大多将其视为原始哈希 ID 的名称。这些给你一个“分离的头”。出于git status 的目的,Git 会尝试记住您用于进入此“分离 HEAD”状态的名称。但真正重要的是 ID。

当您删除分支名称时,提交本身会保留一段时间——通常至少 30 天。你可以在 Git 的“reflogs”中找到他们的 ID。这有点让人头疼,因为如果你运行git reflog,你会得到大量难以搜索的东西。但是提交仍然在那里。你只需要找到你关心的人(使用,例如,git show 08bb350 来查看提交08bb350)并“复活”他们:

$ git branch zombie 08bb350

例如,如果您希望作为分支返回的提交是 08bb350

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2013-10-02
    • 2019-04-12
    • 1970-01-01
    • 2012-07-15
    • 2018-06-10
    • 1970-01-01
    相关资源
    最近更新 更多