使用先前的提交覆盖所有存储库

时间:2016-01-22 17:22:29

标签: git bitbucket

今天在我们身上发生了令人尴尬的事情,一位新的合作伙伴已经做出了承诺。 push并覆盖了存储库中的所有内容。

现在我需要回到灾难发生前的那一刻。

您可以删除对远程存储库的提交吗?

如果没有,因为我可以提交(例如: 0231c10 )作为主分会的负责人?

3 个答案:

答案 0 :(得分:0)

当您在git reset --hard 0231c10分支时,可以使用master执行此操作。

答案 1 :(得分:0)

如果使用一个新提交完成存储库的覆盖,那么最好使用命令git revert <hash>恢复它。通过还原将创建新的提交,它只会还原在提交<hash>中所做的更改。

使用这种方法,你的历史记录中仍然会有错误的提交,但如果你没有足够的经验,最好的方法就是解决这个问题,因为它很容易,否则就像{{1}这样的方法你将需要使用push with force选项并且它不是非常安全的行动,即使你已经准备好承担这种风险,你需要知道你需要要求所有提交者不要采取非常安全的行动。他们的环境,如git reset --hard 0231c10,然后是主分支git fetch origin

但是如果您认为您已准备好在存储库中重写历史记录,请使用另一个答案中提出的git reset --hard origin/master

答案 2 :(得分:0)

通常,在已发布的回购邮件中,git revert然后git push会更安全。还有其他解决方案,

  1. 如果不对本地仓库进行任何更改,您也可以执行git push -f origin 0231c10:master

  2. 之类的操作
  3. git reset --hard <revision_id_of_last_known_good_commit>git push --force