我试图从我的GitHub存储库之一删除最后2次提交。我已经尝试了这里的建议:git push -f origin HEAD^^:master。它似乎是工作的,因为最后两个提交被删除了。

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

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

我认为问题是在我的本地存储库,因为如果我克隆我的Github存储库到我的本地,并在这里做一些更改,当我推送一个新的提交时,那些旧的提交不会推送到Github。


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

git reset --hard HEAD^^

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


下面的方法对我有用

git reset HEAD~n

它从本地回购中删除最后n个提交,就像HEAD^只删除一个一样。如果您需要从远程删除这些更改,您可能需要强制push,因为您将位于远程后面。

git push -f origin <branch>

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

git reset --hard HEAD~2

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

要将这个更改推送到remote,你需要使用force (-f)参数执行git推送:

git push -f

然而,我不建议使用-f或——硬选项来执行任何git命令,如果在这个提交之后远程(Github)上有新的提交,你想要删除。在这种情况下,总是使用git revert。


删除最后一次提交

要从git中删除最后一次提交,可以简单地运行

Git重置——很难

HEAD^如果你正在从顶部删除多个提交,你可以运行

git重置-硬头~2

删除最后两个提交。您可以增加数量以删除更多的提交。

如果你想“取消提交”这些提交,但保留更改以备重新工作,请删除“——hard”

git重置头^

这将从分支和索引中驱逐提交,但保留工作树。

如果您想将提交保存在一个新的分支名称上,那么运行

你叫什么名字

在做git重置之前。

回答——这个主旨回答帮助了我


如果您的更改还没有被推送,只需输入命令。

git reset --hard HEAD~n 

如果您已经推送了更改,则需要运行以下代码。

git push origin HEAD --force