我们有一个主分支,我们在其中合并了大约 10 个功能分支,一次一个。
所以最近的历史是这样的:
merged feat/10 (HEAD of master)
merged feat/9
merged feat/8
merged feat/7
merged feat/6
merged feat/5
...
现在我们发现这feat/7
很糟糕,我们想把它从主人那里拿走。恢复那个合并提交是不够的,因为我们根本不希望那个被破坏的提交存在于我们的历史中。我们不能真正使用交互式变基,因为这会使历史变平,使其看起来好像都是在一个分支上完成的,并且我们希望保留所有良好的合并历史。
有没有办法从分支的历史中删除特定的合并提交?
我会注意到真实的历史比您在上面的示例中看到的要复杂得多,因此手动重新执行自 feat/7 以来的所有合并不是一个好的选择。
编辑
为了澄清那些投票决定将其作为 dup 关闭的人:这不是关于如何使用 rebase 取出提交的常见问题解答,这当然已被多次回答。这里的问题是关于在不展平合并历史的情况下取出提交。