我不小心删除了远程存储库中的所有内容,并强制重写了历史记录

时间:2019-07-03 10:07:14

标签: git github

我在一个更改了一个文件的远程存储库上推送了一个提交,但是在该提交中跟踪了文件的整个目录,因此看起来就像我更改了该目录中的每个文件。

因此,我想从远程回购的历史记录中删除该提交,使用命令git push origin + f2d3f909138e785b63415808c487abc070070c4a12b ^:master,f2d3f909138e785b63415808c487abc070c4a12b是我想要摆脱的提交。

发生的事情是删除了远程回购记录中的所有其他提交。

我只想回到上一条命令之前的状态,现在提交已不是什么大问题。 更糟糕的是,我在本地有文件的副本,但是历史记录仍然保留了许多重要信息。

1 个答案:

答案 0 :(得分:0)

您的团队中应该有一个在您强行推动之前最后推动的人。该人在其本地存储库中拥有所有提交。因此,只需请该人将最新提交推送到原始服务器/主机中即可:

git push -f origin [commit hash]:refs/heads/master

如果提交是未知的,因为该人获取了最新更改并覆盖了其本地分支,则他可以使用git reflog查找先前签出的提交。

或者,如果您有由推送触发的构建服务器(希望这样做),则可以在构建日志中找到最新的提交哈希。而且,该提交可能仍在CI作业的工作目录中。