How to use --onto along with --rebase-merges - in the given situation.
Current:
C0---C1---C2---C3---C4---C5---C6 (master)
           \              |__________
            \                        \
             F1---F2---F3---F4---F5---M1---F6---F7 (feature)
Goal: I want to get "onto" to C3 while preserving all merges:
C0---C1---C2---C3---C4---C5---C6 (master)
                \         |_______________
                 \                        \
                  F1'--F2'--F3'--F4'--F5'--M1'--F6'--F7' (feature)
The desired result is as if replaying history in feature, except everything starts from C3. The resulting files should be the same in the feature branch before and after the rebase.
When I tried: git rebase -r --onto C3 master:
I get something like this, resulting in dropping C4 and C5 from feature.
C0---C1---C2---C3---C4---C5---C6 (master)
           \    \____________________
            \                        \
             F1---F2---F3---F4---F5---M1'--F6'--F7' (feature)
What am I missing? I have seen a few posts related to --onto already, and I can't say I can work out what is going on here from there.
