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

是否可以删除此提交?

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


当前回答

在终端上运行此命令。

git reset HEAD~n

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

git push -f origin <branch>

希望这有帮助!

其他回答

为了方便还原,还有一种可能性(自提交以来的所有内容都将被删除):

git reset --hard commit_hash_you_want_to_return_to

例如,如果您想将分支重置为过去的提交,如71c27777543ccfcb0376dcdd8f6777df055ef479:

git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479

下一步是将分支修改推送到源(远程回购):

git push --force

注意

请记住,如果其他贡献者正在与您的分支机构合作,他们可能会遇到冲突或其他问题,因为您正在更改分支机构的历史记录,但仅限于您,而不是那些已经使用您的分支的人。当心

git push -f origin HEAD^:master

这应该会“撤销”推送。

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

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

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

git reset --soft HEAD~1

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

git reset --hard HEAD~1

在Github上找到你想成为分支负责人的提交的参考规范,并使用以下命令:

git推送原点+[ref]:[branchName]

在您的情况下,如果您只想返回一次提交,请查找该提交的ref的开头,例如它是7f6d03,以及要更改的分支的名称,例如它为master,然后执行以下操作:

git推送原点+7f6d03:主

加号被解释为--force,这是必要的,因为您正在改写历史。

请注意,任何时候你强制提交,都可能会改写合并你分支的其他人的历史。然而,如果你很快发现了问题(在其他人合并你的分支之前),你就不会有任何问题。