私たちのgit開発ワークフローでは、トピックブランチは、マージされるまで最新のマスターに基づいて継続的にリベースされます。
ただし、新しい開発者がトピックブランチを作成し、マスターをトピックブランチにいくつかマージして、それらを最新の状態に保ちました。
A---B---C---D---E topic
/ / /
F---G---H---I master
このトピックブランチをマスターにマージすることは完全に正しいでしょうが、それは非常に厄介な歴史をもたらします。--no-ff
これらのトピックブランチを、1回のマージコミットでマスターにクリーンにマージできるクリーンな線形リベース履歴に変換したいと思います。
A'---B'---E' topic
/
F---G---H---I master
理想的には、CやDなどのトピックマージコミットですでに利用可能なマージ競合解決情報を自動的に適用しながら、トピックブランチのコミットをそのまま取得してリベースを実行できるgit-fuがいくつかあります。
「gitdiffmaster..topic」のパッチを適用してから、リベースを使用して逆方向に作業し、単一のパッチを手動で個々のコミットに分割できることはわかっていますが、よりシンプルでエレガントなアプローチはありますか?
私はまっすぐに試してみましたがgit rebase
、git rebase -p
運が悪かったのです。