git - Easiest way to "cherry-pick a merge" -
i know title little woolly - hence quotes!
say have branch, b_feature
branched , merged main development branch b_master
. there exists branch, b_release
, wish add these changes (as point release). b_master
, b_release
have been diverged , never merged again.
---------bm----k1-----mm-----> b_master (k1 isn't included in b_release) \ \ / \ c1--c2--c3 (b_feature) \ \----br---------mr-----> b_release \ / ca-cb-cc
i know can cherry-pick whole thing single diff git cherry-pick -m mm
, giving
----br--squashed----> b_release
where squashed
commit containing changes of feature, message of merge mm
.
but if want retain change history , individual commit messages? can manually cherry-pick approximate workflow:
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
but seems clunky workaround more elegant solution don't know!
rebase --onto b_release bm mm
doesn't seem produce result looking for.
any better way it?
i think rebase more proper tool cherry-pick here, although difference minor. here how have done it. first attach b_release_feature branch source branch , rebase onto target branch.
git checkout -b b_release_feature c3 git rebase --onto b_release c1^ b_release_feature git checkout b_release git merge b_release_feature git commit --amend --reedit-message=mm git branch -d b_release_feature
Comments
Post a Comment