在git revert之后,工作树保持不变

时间:2016-02-19 21:14:42

标签: git git-checkout git-revert

我有一个糟糕的推送提交 如何撤消此提交,并返回到我的工作树(之前)?

这将引导我进入正确的工作树:

git checkout HEAD~1

这将导致我正确提交,但工作树仍然是相同的不必要的文件:

git revert HEAD~1

如何完全回滚到之前的提交?

我的意思是,我不应该对脱离的HEAD做出承诺,对吧? (如果是git checkout <commit>

2 个答案:

答案 0 :(得分:1)

根据this answergit revert HEAD是您应该使用的;但是,如果恢复的提交添加了任何文件或文件夹,它们将作为未跟踪文件保留在工作副本中。要摆脱它们,请运行git clean(如this answer中所述)。

更新:在本地测试后,我将所需命令编辑为git revert HEAD。不应该运行git clean。正如链接的答案所解释的那样,git revert提交反向合并&#39;传递给它的提交,如果HEAD~1是你想要的最终结果,你应该将HEAD传递给git revert

答案 1 :(得分:1)

如果要完全回滚到上一次提交并从历史记录中删除错误提交。

git reset --hard HEAD~1