git 还原后,工作树保持不变

After git revert, working tree remains the same

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

这将引导我找到正确的工作树:

git checkout HEAD~1

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

git revert HEAD~1

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

我的意思是,我不应该提交分离的 HEAD,对吗? (在 git checkout <commit> 的情况下)

根据this answer, git revert HEAD is what you should use ; however, if the reverted commit added any files or folders, they will be left in your working copy as untracked files. To get rid of them, run git clean (as explained in this answer).

UPDATE:在本地测试后,我将所需的命令编辑为简单的 git revert HEAD。应该没有必要运行git clean。正如链接的答案所解释的那样,git revert 提交传递给它的提交的 'reverse merge',因此 - 如果 HEAD~1 是您想要的最终结果,您应该将 HEAD 传递给 git revert

如果你想完全回滚到之前的提交并从历史记录中删除错误的提交。

git reset --hard HEAD~1