Earlier "git cherry-pick" learned the "-m <parent-number>" option to allow cherry-picking a merge commit.
When you have this history:
---o---o---C---A---M
\ /
o---o-------BYou can replay the change between A and M (in other words, the effect of merging B into A) on top of C to create a new commit, with:
$ git cherry-pick -m 1 M
In the current implementation, the resulting commit has a single parent C. This is quite similar to a squash merge of B into C.
When you think about it, as long as the topological relationship between A and B is very similar to that of C and B (iow, "merge-base A B" and "merge-base C B" are the same), the effect should be the same as a real merge between B and C, shouldn't it?
---o---o---C---A---M
\ \ /
o---o---\---B
\ \
`---XI am wondering if it makes sense to record the result of "cherry-pick -m" as a real merge between the current HEAD and all the other parents of the cherry-picked merge except the one that is named with the <parent-number>.