git - 为什么我在Android Studio 3.3.1 中执行Checkout revision 和Commit 操作时会得到 "Detached Head"消息?

标签 git android-studio github

我在 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一样,为什么?我该如何解决?

第一步 enter image description here

第 2 步 enter image description here

第 3 步 enter image description here

第 4 步 enter image description here

最佳答案

当您通过 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/

相关文章:

android - 如何从我们的项目中排除 Android Studio 的内部 m2 存储库?

安卓工作室 : You must specify a path to Genymotion folder to use this feature

Git 删除不在 remotes/origin 中的远程分支

git - TortoiseGit - 多个 GitHub 存储库,每个存储库具有不同的 key 对

ruby - 通过 REST API 或 Ocktokit (Ruby) 从 GitHub 获取文件的最聪明的方法

GIT:附加几次提交后制作的补丁

git - 将 git-push 复制到另一台计算机,或执行较小的增量推送?

xcode - 在适用于 Mac 的 OSX Xcode 项目上使用 ffmpeg

android - 两指触摸板滚动在 Android Studio 上不起作用?

git - 如何查看哪些 Git 分支正在跟踪哪个远程/上游分支?