一度に 1 つずつ、約 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 として閉じることに投票した人のために明確にするために: これはリベースを使用してコミットを実行する方法に関する FAQ ではなく、もちろん何度も回答されています。ここでの質問は、マージ履歴を平坦化せずにコミットを取り出すことについてです。