我“不小心”向GitHub推送了一个提交。

是否可以删除此提交?

我想恢复提交之前的GitHub存储库。


当前回答

git reset HEAD^ --hard
git push origin -f

这对我有用。

其他回答

要保留分支和合并结构,在执行重基时使用--preserve merges选项非常重要:

git rebase --preserve-merges -i HEAD^^

要从远程存储库中删除提交,请执行以下操作:

 git push -f origin last_known_good_commit:branch_name

要从本地存储库中删除提交,请执行以下操作:

git reset --hard HEAD~1

link

注意:请在下面的评论中看到gitrebase-i的替代方案-git reset—软头^

首先,删除本地存储库中的提交。您可以使用gitrebase-i来执行此操作。例如,如果是最后一次提交,可以执行gitrebase-i HEAD~2并在弹出的编辑器窗口中删除第二行。

然后,使用gitpushorigin+branchName--force强制推送到GitHub

有关更多信息,请参见Git Magic第5章:历史教训-然后是一些(例如,如果您想删除旧的提交)。

哦,如果你的工作树很脏,你必须先做一个git存储,然后再应用git存储。

首先将本地更改保存在一旁的某个位置(备份)

您可以浏览最近的提交,然后单击“复制完整SHA”按钮将其发送到剪贴板。

如果您的最后一个提交哈希是,那么让我们说g0834hg304gh3084gh(例如)

您必须运行:

git推送原点+g0834hg304gh3084gh:主

使用您先前复制的哈希,使其成为“HEAD”版本。

添加所需的本地更改。完成;)

git push -f origin HEAD^:master

这应该会“撤销”推送。