git: 只重做旧的提交

git: redo an old commit only

我在 git 下有一个项目,其中最后一次提交有正确的更改,但倒数第二个提交必须完全还原,因此应用的更改从倒数第三个到下一个-倒数必须是 "ignored".

最后一次提交和倒数第二次提交没有共同的修改文件。

我该怎么做?

执行此操作的典型方法是

git revert HEAD^
# HEAD points to the last commit, so HEAD^ is the commit just before

它将在分支提示的顶部创建一个新的提交,包含您的错误提交所包含的反向更改。

注意:这不会重写您的历史记录,当您需要推送时不需要--force任何东西。

如果您在分支机构中,则可以使用 cherry-pick

即:

  • 从最后一个好的提交创建一个新分支(例如:master)

  • 然后挑选最后一次提交:git cherry-pick <last-commit-sha>