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

是否可以删除此提交?

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


当前回答

git push -f origin HEAD^:master

这应该会“撤销”推送。

其他回答

使用git-restore恢复推送。

git-restore-还原一些现有提交git-restore[-edit|--no edit][-n][-m父编号][-s]<commit>。。。git revert--继续git revert—退出git revert—中止

还原相关修补程序引入的更改,并记录记录这些更改的一些新提交。这需要你的工作树是干净的(没有来自HEAD提交的修改)。

注意:git-restore用于记录一些新的提交,以反转一些早期提交的效果(通常只有一个错误的提交)。如果要丢弃工作目录中所有未提交的更改,应该看到git reset,特别是--hard选项。

在终端上运行此命令。

git reset HEAD~n

您可以从本地repo中删除最后n个提交,例如HEAD~2。继续在存储库上强制git推送。

git push -f origin <branch>

希望这有帮助!

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

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

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

删除最近的提交,保留已完成的工作:

git reset --soft HEAD~1

删除最近的提交,销毁您已完成的工作:

git reset --hard HEAD~1

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

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

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

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

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