私はタイトルが少し毛むくじゃらであることを知っています - したがって、引用符!
b_feature
メインの開発ブランチから分岐してマージされたブランチがあるとしますb_master
。b_release
これらの変更を (ポイント リリースとして) 追加したい別のブランチ があります。b_master
分岐しb_release
ており、再びマージされることはありません。
---------Bm----k1-----Mm-----> b_master (k1 isn't to be included in b_release)
\ \ /
\ c1--c2--c3 (b_feature)
\
\----Br---------Mr-----> b_release
\ /
cA-cB-cC
git cherry-pick -m Mm
を使用して、すべてを単一の差分としてチェリーピックできることを知っています。
----Br--Squashed----> b_release
ここSquashed
で、マージのメッセージとともに、機能のすべての変更を含むコミットですMm
。
しかし、変更履歴と個々のコミット メッセージを保持したい場合はどうすればよいでしょうか? このおおよそのワークフローを使用して、いつでも手動で選択できます。
git checkout b_release
git checkout -b b_release_feature
git cherry-pick c1^..c3
git checkout b_release
git merge b_release_feature
git commit --amend --reedit-message=Mm
git branch -d b_release_feature
しかし、これは、私が知らないよりエレガントなソリューションへの不格好な回避策のようです!
rebase --onto b_release Bm Mm
また、私が探している結果が得られないようです。
それを行うより良い方法はありますか?