我们有人提交了一些只有部分合并的文件。简而言之,任何拉扯的人都会以一个损坏的项目结束。
我们通过做一个git --reset HARD来解决这个问题。大!现在的问题是我们落后了2个提交。但是我们不希望这两个提交。我们想假装xxyy之后的所有事情都没发生过。
这里最好的选择是什么?
答案 0 :(得分:2)
您已经解决了问题,至少在本地解决了问题。但糟糕的提交仍然存在于遥控器上。你基本上有两个选择:
您可以使用git revert
还原遥控器上的两个提交:
git revert <SHA-1 of commit #1>
git revert <SHA-1 of commit #2>
此选项基本上会在远程分支上添加两个 new 提交,这将有效撤消原始提交所做的任何事情。
您可以对分支执行交互式rebase并删除两个提交:
git rebase -i
在此选项中,您将完全删除两个错误提交。但是,这也将重写远程分支的历史记录,这可能会迫使您组中的某些人(包括您自己)删除分支的本地副本并从远程检出全新版本。
执行git revert
可能是最安全的选择,因为它不会伤害任何拥有相关分支本地副本的人。
答案 1 :(得分:0)
问题可能是那个人将这些提交推送到GitHub或其他社交编码服务。
现在当你执行push
时,推送时要小心不要删除任何内容。但是,您可以--force
推送接受历史记录重写:
git push origin HEAD --force
如解释in this answer。