git - 如何删除Github上的最后一次提交和本地?

我试图删除我的一个GitHub存储库中的最后两个提交。 我按照这里的建议尝试了:git push -f origin HEAD ^^:master。 它似乎工作,最后两个提交被删除。

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

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

我认为它存在于我的本地存储库中,因为如果我将我的Github存储库克隆到本地,并在我推送新提交时在这里进行一些更改,那些旧提交都不会被推送到GitHub。

任何的想法?

Ivan Fernandez asked 2019-08-11T21:31:34Z
3个解决方案
159 votes

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

git reset --hard HEAD^^

Rebase是一个完全不同的操作,在这里不会帮到你。

KL-7 answered 2019-08-11T21:31:52Z
61 votes

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

git reset --hard HEAD~2

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

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

git push -f

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

Dherik answered 2019-08-11T21:32:38Z
16 votes

以下适用于我

git reset HEAD~n

它从本地仓库删除了最后n提交,因为HEAD^只删除了一个。 如果您需要从远程删除这些更改,您可能需要强制推送,因为您将在远程后面。

git push -f origin <branch>
Sial01 answered 2019-08-11T21:33:10Z
translate from https://stackoverflow.com:/questions/10153486/how-to-delete-the-last-n-commit-on-github-and-locally