在Android Studio 3.3.1中执行Checkout修订和Commit操作时,为什么会收到“独立标题”消息?

时间:2019-02-27 02:01:57

标签: git android-studio github

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

A:我编辑了两次文件,然后提交两次,然后将项目推送两次,就可以了。您会看到第1步的图像。

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

C:Checkout Revision操作成功,并且获得了步骤3的图像,但是在图像的右下角找到了Git显示 5adce2b8 ,我不明白为什么不显示 master

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

第1步 enter image description here

第2步 enter image description here

第3步 enter image description here

第4步 enter image description here

2 个答案:

答案 0 :(得分:6)

当您通过ID或标签签出修订版时,您是在要求git在其中设置工作树,当您决定进行任何操作时,没有附加分支可以跟随您...用git没问题,一点问题都没有。此状态称为detached HEAD。例如,如果您要求git提交,则git将创建一个新修订版,将先前的修订版设置为其父版本,一切按正常方式进行...区别在于,因为您未在分支上工作,没有分支指针可以移动到刚刚创建的新修订版上。同样,从git的角度来看,这是完全正常的。现在,对于您来说,这是不是的正常工作方式。例如,如果您想像新功能一样进行开发工作,则可能希望能够随时提交然后跳转到任何地方,而不必查看引用日志就可以看到您将工作挂在哪里。 ..这就是为什么要使用分支来开发功能的原因。

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

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

人们会想到其他数十个原因来处理独立的HEAD。实际上,这是git的奇迹之一。

如果您已经在终端上进行了结帐,则git会向您发出警告,告诉您开始在分离的HEAD上进行操作,并且还会给出一些指导以使其脱离该结帐。通常,您只需在您所在的位置创建一个分支并将其签出即可。可以一次完成:

git checkout -b some-new-branch

您将再次在分支上工作,而不再需要分离的HEAD状态。

答案 1 :(得分:2)

基本上,“ DETACHED HEAD”意味着您不在分支上。如果您不只是想在此时检查仓库的状态,而是继续进行操作,那么您将要在那里设置(重置)分支,因此“将当前分支重置到此处”。

签出修订版–设置工作目录以匹配此时的文件。 还原–取消该提交引入的更改(将创建一个还原提交)。

我建议阅读git branch basics。完成之后,关于git的一切都应该变得有意义。