【问题标题】:Why do I get a "Detached Head" message when I perform the Checkout revision and Commit operation in Android Studio 3.3.1?为什么我在 Android Studio 3.3.1 中执行 Checkout revision 和 Commit 操作时会收到“Detached Head”消息?
【发布时间】:2026-01-29 08:30:01
【问题描述】:

我在 Android Studio 3.3.1 的项目中使用 GitHub。

A:我编辑了一个文件两次,Commit然后Push了两次项目,就OK了。您会看到图像第 1 步。

B:我希望返回点“Submit 1”,所以我执行Checkout Revision操作,就像图像步骤2。

C: Checkout Revision 操作成功,得到图片Step 3,但是发现Git 显示5adce2b8在图片Step 3的右下角,不明白为什么不显示 master

D:我做了一些修改,但是当我执行 Commit 操作时,我得到了错误“Detached Head”,就像图像第 4 步一样,为什么?我该如何解决?

第 1 步

第 2 步

第 3 步

第 4 步

【问题讨论】:

    标签: git android-studio github


    【解决方案1】:

    当您通过 id 或标签签出修订时,您是在要求 git 将您的工作树设置在那里 但是 当您决定执行任何操作时,没有附加分支来跟随您... git很好,完全没有问题。此状态称为detached HEAD。例如,如果您要求 git 提交,git 将创建一个新修订版,将以前的修订版设置为其父修订版,一切都照常进行……不同之处在于,因为您没有在分支上工作,在您刚刚创建的这个新修订版上没有可移动的分支指针。同样,从 git 的角度来看,这是完全正常的。现在,对于作为开发人员的你来说,这不是你希望正常工作的方式。例如,如果您想像新功能一样进行开发工作,您可能希望能够随时提交然后跳转到任何地方,而不必查看 reflog 就能看到您将工作搁置在哪里。 .. 这就是为什么你会使用分支来开发你的功能。

    但是他们,分离的 HEAD 是做什么用的?我可以很快想到这些情况:

    • 需要签出一个远程分支,而我实际上不需要或不想要一个本地分支(不会在那里进行任何开发,只需检查一些东西然后回到我原来的位置)
    • 在移动涉及的实际分支之前,需要测试合并是否正常
    • 需要通过将更改从一个分支拉到另一个远程分支来快速修复。

    人们会想到其他几十个理由来研究分离的 HEAD。实际上,这是 git 的奇迹之一。

    如果你在终端上完成了结帐,你会从 git 收到一个很大的警告,告诉你开始在分离的 HEAD 上工作,并且还会给出一些指示来摆脱它。通常,您只需在您所在的位置创建一个分支并检查它。可以一次性完成:

    git checkout -b some-new-branch
    

    你将再次在一个分支上工作,不再是分离的 HEAD 状态。

    【讨论】:

      【解决方案2】:

      基本上,“DETACHED HEAD”表示您不在分支上。如果您不仅要查看当时的 repo 状态,还要继续处理它,您将要在此处设置(重置)一个分支,因此“将当前分支重置到此处”。

      Checkout revision - 设置您的工作目录以匹配当时的文件。 Revert – 取消由该提交引入的更改(将创建一个还原提交)。

      我建议阅读git branch basics。在你这样做之后,关于 git 的一切都应该开始变得有意义了。

      【讨论】:

        最近更新 更多