在master中恢复多个提交



G1-B1-G2-G3-G4-G5-G6-G7-B2-G8-G9

我已经在master中进行了上述提交。

恢复B1的最好方法是什么?和B2从上面承诺?
并重新推送到master

重置和精挑细选似乎相当多的工作。
我只是想找一个更好更简单的方法来做这件事。

最干净的方法是发出两个git revert命令:

git revert B1
git revert B2

这将创建两个新的提交,B1和B2的负映像,允许您执行简单的git推送(不需要强制,不需要"历史重写")

如果您想保留提交但恢复其更改,请参阅VonC的答案。

如果你想重写历史记录并删除这些提交,就像它们从未存在过一样,你可以使用交互式rebase:

git rebase -i G1

在文本编辑器中删除B1和B2行,保存,退出,它们将从历史记录中删除。在重写历史记录时,需要注意以下几点: