我在 Android Studio 3.3.1 的项目中使用 GitHub。
A:我编辑了两次文件,两次Commit然后Push项目,就OK了。您会看到图像步骤 1。
B:我希望返回“Submit 1”这个点,所以我按照图片Step 2的方式进行了Checkout Revision操作。
C: Checkout Revision操作成功,得到图Step 3,但是Git在图Step 3的右下角显示5adce2b8,不明白为什么不显示 master。
D:我做了一些修改,但是当我执行Commit操作时,我得到了“Detached Head”的错误,就像图像步骤4一样,为什么?我该如何解决?
最佳答案
当您通过 id 或标签 checkout 修订版时,您是在要求 git 在那里设置您的工作树但是当您决定执行任何操作时,没有附加的分支跟随您......这git 没问题,完全没问题。此状态称为 detached HEAD
。例如,如果你要求 git 提交,git 将创建一个新修订,将以前的修订设置为它的父修订,一切都按照它通常的方式进行......不同之处在于,因为你不是在分支上工作,没有分支指针可以移动到您刚刚创建的这个新修订版上进行设置。同样,从 git 的角度来看,这是完全正常的。现在,对于作为开发人员的您来说,这不是您希望正常的工作方式。例如,如果您想像开发新功能一样进行开发工作,您可能希望能够随时提交然后跳到任何地方,而不必查看 reflog 就能看到您的工作悬而未决的地方。 .. 这就是为什么您会使用分支来开发您的功能。
可是他们,detached HEAD是干什么用的呢?我可以很快想到这些情况:
- 需要检查一个远程分支,而我实际上不需要或不想要一个本地分支(不会在那里做任何开发,只是检查一些东西然后回到我原来的地方)
- 在移动涉及的实际分支之前需要测试 merge 是否正常进行
- 需要通过将更改从一个分支 pull 到远程上的另一个分支来进行快速修复。
人们会想到其他许多理由来处理分离式 HEAD。实际上,这是 git 的奇迹之一。
如果您在终端上完成了 checkout ,您会从 git 那里收到一个很大的警告,告诉您开始在分离的 HEAD 上工作,并且还会给出一些说明来摆脱它。通常,您只需在您所在的位置创建一个分支并检查它。它可以一次性完成:
git checkout -b some-new-branch
你会再次在一个分支上工作,不再有分离的 HEAD 状态。
关于git - 为什么我在Android Studio 3.3.1 中执行Checkout revision 和Commit 操作时会得到 "Detached Head"消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54896918/