我“不小心”向GitHub推送了一个提交。
是否可以删除此提交?
我想恢复提交之前的GitHub存储库。
我“不小心”向GitHub推送了一个提交。
是否可以删除此提交?
我想恢复提交之前的GitHub存储库。
当前回答
git日志找到要还原的提交git推送原点+7f6d03:主而7f6d03是错误推送提交之前的提交。+用于用力推
就这样。
这里有一个很好的指南,可以轻松简单地解决您的问题!
其他回答
注意:请在下面的评论中看到gitrebase-i的替代方案-git reset—软头^
首先,删除本地存储库中的提交。您可以使用gitrebase-i来执行此操作。例如,如果是最后一次提交,可以执行gitrebase-i HEAD~2并在弹出的编辑器窗口中删除第二行。
然后,使用gitpushorigin+branchName--force强制推送到GitHub
有关更多信息,请参见Git Magic第5章:历史教训-然后是一些(例如,如果您想删除旧的提交)。
哦,如果你的工作树很脏,你必须先做一个git存储,然后再应用git存储。
在Github上找到你想成为分支负责人的提交的参考规范,并使用以下命令:
git推送原点+[ref]:[branchName]
在您的情况下,如果您只想返回一次提交,请查找该提交的ref的开头,例如它是7f6d03,以及要更改的分支的名称,例如它为master,然后执行以下操作:
git推送原点+7f6d03:主
加号被解释为--force,这是必要的,因为您正在改写历史。
请注意,任何时候你强制提交,都可能会改写合并你分支的其他人的历史。然而,如果你很快发现了问题(在其他人合并你的分支之前),你就不会有任何问题。
git push -f origin HEAD^:master
这应该会“撤销”推送。
重写历史不是很好。若我们使用git-restore<commit_id>,它将创建所述提交id的干净反向提交。
这样,历史就不会被改写了,相反,每个人都知道,历史已经发生了逆转。
为了方便还原,还有一种可能性(自提交以来的所有内容都将被删除):
git reset --hard commit_hash_you_want_to_return_to
例如,如果您想将分支重置为过去的提交,如71c27777543ccfcb0376dcdd8f6777df055ef479:
git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479
下一步是将分支修改推送到源(远程回购):
git push --force
注意
请记住,如果其他贡献者正在与您的分支机构合作,他们可能会遇到冲突或其他问题,因为您正在更改分支机构的历史记录,但仅限于您,而不是那些已经使用您的分支的人。当心