如何可靠地撤消最后一个 git pull 命令?

How do I reliably undo the last git pull command?

在极少数情况下,git 拉取会导致我们的网站出现问题,我需要快速倒回时钟,以便开发人员可以解决问题。我试过 git reset HEAD@{1} 但这并不能解决问题,因为某些文件仍在更改。好像它只回滚了一些文件。

在最近的 git pull 命令之前,我可以调用一个命令来可靠地恢复文件吗?

找到您想要保留 的最新提交,并计算有多少次提交出现 之后。例如,假设您的最新 git pull 中出现了三个新提交,您想要对它们进行核对。在这种情况下,您可以使用 git reset --hard:

git reset --hard HEAD~3

只需将 3 替换为您要删除的任意数量的提交即可。

有一个挥之不去的问题,就是你打算在这之后做什么。现在远程分支仍然会有这三个不需要的提交。但是假设你通过重新提交来解决问题,你可以避免重写历史的问题。

你只是在做

git reset HEAD@{1}

?如果是这样,这将使用 --mixed 模式作为默认模式,这可以解释为什么您会看到已更改的文件。我怀疑你应该使用

git reset --hard HEAD@{1}

这样它也会重置你的工作树。