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

是否可以删除此提交?

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


当前回答

对于GitHub

在本地存储库中重置提交(HARD)创建新分支推送新分支删除旧分支(如果要删除主分支,请将新分支作为默认分支)

其他回答

重写历史不是很好。若我们使用git-restore<commit_id>,它将创建所述提交id的干净反向提交。

这样,历史就不会被改写了,相反,每个人都知道,历史已经发生了逆转。

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

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

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

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

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

在GitHub Desktop中,您只需右键单击提交并将其还原,这将创建一个新的提交以撤消更改。

意外提交仍将在您的历史记录中(例如,如果您意外提交了API密钥或密码,这可能是一个问题),但代码将被还原。

这是最简单和最简单的选择,公认的答案更全面。

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

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

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

您必须运行:

git推送原点+g0834hg304gh3084gh:主

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

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

git日志找到要还原的提交git推送原点+7f6d03:主而7f6d03是错误推送提交之前的提交。+用于用力推

就这样。

这里有一个很好的指南,可以轻松简单地解决您的问题!