如何回滚到某个提交?

How to roll back to a certain commit?

我有一个提交列表。需要回滚到 some fit & upd (97f962f143b136d0d6dcbdfc02afc8253c767d7f)。需要这样做,以便删除在后续提交中创建的所有文件。

git checkout 97f962f143b136d0d6dcbdfc02afc8253c767d7f

更新

您的目标是删除 "some fit & upd," 之后的所有提交,还是只获得处于该状态的工作树?我假设你试过

git rest --hard 97f962f

如果失败,我会在您想要的特定提交时从 github 下载整个包,并用这些文件替换您的工作树。可能不推荐或不安全,但我已经做了很多次(考虑备份您的本地存储库)。

转到 github.com 上的存储库。单击 "X commits"(最左边的按钮),导航到所需的提交,单击提交的名称,单击 "Browse Files"、"Clone or Download",然后下载 zip。您将获得一个包含该提交中文件的 zip。如果您的 HEAD 指向您想要的位置,那么用您下载的文件替换树中的文件应该可以。

如果您采用这样的 hacky 解决方案,您的存储库可能有问题,但如果它有效,它就有效。

如果重置无效,您可以考虑尝试 git revert。它不应该像这样使用,但您可以创建一个新分支并恢复最近和您想要的提交之间的所有提交(使用 --no-commit 选项)。您应该最终得到一个与所需提交相匹配的工作目录。这不是一个很好的方法,但如果重置根本不起作用,那么也许值得一试。