この質問はgit rebase interactive: squash merge commits togetherに非常に関連しています。
特定のプロジェクトの新しい機能を作成しているとします。たとえば、特定のブランチから開始し、devel
フィーチャー用のブランチを構築しますfeature/X
。ときどき、プロジェクトでいくつかの問題を見つけることもあるので、あなたはfixes
から始まるという名前の 2 番目のブランチを構築することにしましたdevel
。
修正を随時適用する必要があるため、時々feature/X
実行し続けると、次のような状況になります。git merge fixes
a --- b --- M --- c --- M --- d ---- e --- M (feature)
/ / / /
/ / / /
devel ----- fix1 ------ fix2 ------------- fix3 (fixes)
これは決してプッシュされなかったので (他の誰かの履歴を壊すことはありません)、すべてのマージを 1 つに因数分解して、次の結果を得たいと思います。
a ---------------------- M --- b --- c --- d --- e (feature)
/ /
/ /
devel -- fix1 -- fix2 -- fix3 (fixes)
この結果を得る方法は、
git co -b feature2 devel
git merge --no-ff fixes
git rebase featur2 feature
これは実際に仕事をしますが、feature2
後でマージのコミットメッセージに表示される別のブランチを作成する必要があります。また、2 つ以上のブランチで作業しているときに試してみてください。
これを行うよりエレガントな方法はありますか?便利なコマンドの価値がある操作と思われるので、ショートカットがあると思います。
ご協力いただきありがとうございます