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

Iva*_*dez 107 git commit github

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

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

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

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

任何的想法?

KL-*_*L-7 171

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

git reset --hard HEAD^^
Run Code Online (Sandbox Code Playgroud)

Rebase是一个完全不同的操作,在这里无济于事.

  • 如果您已将此更改推送到远程存储库.你可以用git push -f删除它 (20认同)
  • @ user_19你可以做一些事情,比如`git reset --hard HEAD ^ 4`或`git reset --hard HEAD~4`.但是,如果您的历史记录包含合并,事情可能会有点复杂.您可以在[here](https://www.kernel.org/pub/software/scm/git/docs/git-rev-parse.html)的相应部分中找到有关指定修订的更多信息. (5认同)
  • @GaganGami,我想你会做`git reset --hard HEAD~7`,但如果我错了请纠正我. (4认同)
  • 你能概括出最后 n 次提交的情况吗? (2认同)
  • 如果我想删除最近7次提交然后?在HEAD之后我需要放7次^请清除我 (2认同)

Dhe*_*rik 72

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

git reset --hard HEAD~2
Run Code Online (Sandbox Code Playgroud)

您可以更改2要删除的任意数量的上次提交.

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

git push -f
Run Code Online (Sandbox Code Playgroud)

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

  • @ZuhayerTahir如果你想撤消最后5次提交的*提交*那么只需要`git reset HEAD~5`(不要使用`hard`).这样您就可以在分阶段状态(即未提交)中进行更改.对我来说,看[这个答案](/sf/answers/64917051/). (3认同)

小智 16

以下适用于我

git reset HEAD~n
Run Code Online (Sandbox Code Playgroud)

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

git push -f origin <branch>
Run Code Online (Sandbox Code Playgroud)