我在一个更改了一个文件的远程存储库上推送了一个提交,但是在该提交中跟踪了文件的整个目录,因此看起来就像我更改了该目录中的每个文件。
因此,我想从远程回购的历史记录中删除该提交,使用命令git push origin + f2d3f909138e785b63415808c487abc070070c4a12b ^:master,f2d3f909138e785b63415808c487abc070c4a12b是我想要摆脱的提交。
发生的事情是删除了远程回购记录中的所有其他提交。
我只想回到上一条命令之前的状态,现在提交已不是什么大问题。 更糟糕的是,我在本地有文件的副本,但是历史记录仍然保留了许多重要信息。
答案 0 :(得分:0)
您的团队中应该有一个在您强行推动之前最后推动的人。该人在其本地存储库中拥有所有提交。因此,只需请该人将最新提交推送到原始服务器/主机中即可:
git push -f origin [commit hash]:refs/heads/master
如果提交是未知的,因为该人获取了最新更改并覆盖了其本地分支,则他可以使用git reflog
查找先前签出的提交。
或者,如果您有由推送触发的构建服务器(希望这样做),则可以在构建日志中找到最新的提交哈希。而且,该提交可能仍在CI作业的工作目录中。