如何可靠地撤消最后一个 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}
这样它也会重置你的工作树。
在极少数情况下,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}
这样它也会重置你的工作树。