如何删除 GitHub 上和本地的最后 n 次提交?

问题描述 投票:0回答:5

我正在尝试从我的 GitHub 存储库之一删除最后两次提交。我已经按照here的建议进行了尝试:

git push -f origin HEAD^^:master
。看起来它有效,因为最后两个提交被删除了。

然后我用

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

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

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

git github commit
5个回答
329
投票

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

git reset --hard HEAD^^

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


274
投票

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

git reset --hard HEAD~2

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

2

要将此更改推送到远程,您需要使用

force
(git push) 参数执行
-f

git push -f

但是,我不建议使用

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


61
投票

以下对我有用

git reset HEAD~n

它会从本地存储库中删除最后一个

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

git push -f origin <branch>

5
投票

如果您的更改尚未推送,只需输入命令即可。

git reset --hard HEAD~n 

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

git push origin HEAD --force 

4
投票

删除最后一次提交

要从 git 中删除最后一次提交,您只需运行

git重置——硬

HEAD^
如果您要从顶部删除多个提交,您可以运行

git重置--hard HEAD~2

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

如果您想“取消提交”提交,但保留更改以进行返工,请删除

"--hard"

git 重置 HEAD^

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

如果您想将提交保存到新的分支名称上,请运行

git 分支新分支名称

在进行 git 重置之前。

答案 - 这个要点答案帮助了我

© www.soinside.com 2019 - 2024. All rights reserved.