187

我正在尝试从我的一个 GitHub 存储库中删除最后 2 个提交。我已经按照这里的建议尝试过:git push -f origin HEAD^^:master。似乎它有效,因为最后两个提交已被删除。

然后我从我的本地存储库中删除了它们git rebase -i HEAD~2。我删除了与这些提交相关的行,并检查git log它们是否被正确删除。

之后,我在本地存储库中进行了一些更改,进行新的提交,然后推送到 GitHub。问题是,在我的 GitHub 帐户中,我有前两次尝试删除的提交。

我认为问题出在我的本地存储库中,因为如果我将 Github 存储库克隆到本地并在此处进行一些更改,当我推送新提交时,这些旧提交不会推送到 GitHub。

4

4 回答 4

267

要在本地删除最后两个提交,我建议使用:

git reset --hard HEAD^^

Rebase 是一个完全不同的操作,在这里对您没有帮助。

于 2012-04-14T12:14:51.967 回答
175

如果您想删除 2(两次)最后一次提交,有一个简单的命令可以做到这一点:

git reset --hard HEAD~2

您可以更改2要删除的任意数量的最后提交。

要将此更改推送到远程,您需要git push使用force ( -f) 参数:

git push -f

但是,如果在要删除此提交之后远程(Github)上有新的提交,我不建议执行任何git命令-f或涉及的选项。在这种情况下,请始终使用.--hardgit revert

于 2016-08-03T13:13:20.500 回答
49

以下对我有用

git reset HEAD~n

n从本地 repo 中删除最后一次提交,因为HEAD^只删除一个。如果您需要从远程删除这些更改,您可能需要强制推送,因为您将落后于远程。

git push -f origin <branch>
于 2016-08-02T14:53:33.600 回答
5

要删除最后 n 次提交:

git reset HEAD~n

如果您需要从远程删除这些更改,您可能需要强制推送,因为您将落后于远程。

git push -f origin <Branch Name>
于 2021-07-02T10:32:15.107 回答