[英]Git checkout - detached head issue
我知道这里已经讨论了很多。 我绝对不熟悉git及其分支的复杂性。 尽管我经历了多个线程,但我对它们中使用的术语并不满意。 因此,我正在寻找一些易于理解的逐步帮助。 我试图解释我的实际情况以及我要寻找的东西。
我有一个名为css-merge-2016
分支,自最近几天以来我一直在推送我的提交。 现在,我需要恢复为特定的提交。 我也不想保留在工作目录中所做的任何更改。 如果一切恢复到我可以使用的特定提交之前的状态。
我做了git checkout <commit_number>
,这表明我在DETACHED HEAD
。 然后我进入git checkout css-merge-2016
,这是我用来推送更改的分支。 但是当我运行git branch时,它仍然显示以下内容:
subrara @ subrara-desktop:/var/www/localsite.com/local.main.drupal$ git分支
*(与f996a78分开)
css-merge-2016
主
我再次使用git checkout <commitnumber>
进行了检查,它不再显示DETACHED HEAD
消息,而是说
HEAD现在位于f996a78 ...从customtheme / sass / pages中删除了未使用的SCSS文件删除的文件:pages> _home.scss规则合并到了base / sass / all / pages / _home.scss
我需要丢弃f996a78
之后,我所做的所有提交,而我的本地存储库又回到f996a78
。 这是可能吗? 如果是,怎么办? 请提出建议。 我完全被卡住了!
更新:
如果我在此阶段运行git status
,我可以看到
HEAD在F996A78分离
未暂存的更改未提交:
(使用“ git add / rm ...”更新将提交的内容)
(使用“ git checkout-...”放弃工作目录中的更改)
然后是一长串红色的文件列表,其中一些被标记为已modified
,一些被标记为deleted
。
当您检出commit f996a78
,您暂时处于分离状态。 这意味着您的css-merge-2016
分支保持不变,仅指向分支尖端的指针发生了变化。 如果您真的想摆脱在提交f996a78
之后发生的提交,则可以使用git reset --hard
:
git reset --hard f996a78
请记住,这可能会导致f996a78
之后发生的提交在某些时候被删除,并且这些提交将立即不再位于您的分支中。
您还应该注意,如果要将分支推送到远程,则现在必须进行强制推送,例如
git push --force origin css-merge-2016
因为您重写了该分支的历史。 如果css-merge-2016
分支由除您之外的任何人共享,则您可能希望还原查询中的提交,而不是使用git revert
。
你可以试试
git reset --hard f996a78
这会将您的工作目录还原到所需的状态。
您的问题的一部分与git
的“分支复杂性”有关,以及有关git
新知识。
git的有趣之处在于,基本上没有“复杂性”。 当然,除非您知道各种命令,否则您实际上并不知道该怎么做,但是内部数据结构以及实际命令都非常“复杂”(阅读:简直简单),而且肯定很简单系统。
如果您仅阅读一份有关git
内部结构的文档,请git
阅读以下内容: http : //gitready.com/beginner/2009/02/17/how-git-stores-your-data.html尝试真正理解它的含义您(这并不难,也没有很多信息)。 养成在白板或纸上绘制“提交树”的习惯。 之后,您只需要了解单个git
命令如何修改提交树,就可以解决以后的任何问题。
如果您没有该页面,则可以添加https://www.jayway.com/2013/03/03/git-is-a-purely-functional-data-structure/ 。
...对你的问题。 虽然在其他地方提到的git reset ...
当然可以,但是我更喜欢:
git branch css-merge-2016_backup css-merge-2016 # just in case...
git branch -f css-merge-2016 f996a78
git checkout css-merge-2016
然后,让分支(实际上只是指向提交的“便笺”一点)指向该较早的提交。 如果您100%确定已完成旧工作,则可以删除备份分支( git branch -D
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.