我做了一个git reset HARD来修复一个糟糕的提交,但现在我的分支落后了

时间:2016-04-04 06:27:25

标签: git github

我们有人提交了一些只有部分合并的文件。简而言之,任何拉扯的人都会以一个损坏的项目结束。

我们通过做一个git --reset HARD来解决这个问题。大!现在的问题是我们落后了2个提交。但是我们不希望这两个提交。我们想假装xxyy之后的所有事情都没发生过。

这里最好的选择是什么?

2 个答案:

答案 0 :(得分:2)

您已经解决了问题,至少在本地解决了问题。但糟糕的提交仍然存在于遥控器上。你基本上有两个选择:

  1. 您可以使用git revert还原遥控器上的两个提交:

    git revert <SHA-1 of commit #1>
    git revert <SHA-1 of commit #2>
    

    此选项基本上会在远程分支上添加两个 new 提交,这将有效撤消原始提交所做的任何事情。

  2. 您可以对分支执行交互式rebase并删除两个提交:

    git rebase -i
    

    在此选项中,您将完全删除两个错误提交。但是,这也将重写远程分支的历史记录,这可能会迫使您组中的某些人(包括您自己)删除分支的本地副本并从远程检出全新版本。

  3. 执行git revert可能是最安全的选择,因为它不会伤害任何拥有相关分支本地副本的人。

答案 1 :(得分:0)

问题可能是那个人将这些提交推送到GitHub或其他社交编码服务。

现在当你执行push时,推送时要小心不要删除任何内容。但是,您可以--force推送接受历史记录重写

git push origin HEAD --force

如解释in this answer