我在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”,为什么?我该如何解决?
答案 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的一切都应该变得有意义。