繁体   English   中英

git checkout-分离头问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM