To add, when I’m breaking my changes down into multiple parts for review, I tend to:
* squash everything I’ve done into one commit
* create a new branch off main/master that will be the “first commit”
* cherry-pick changes (easy from some git guis) that represent a modular change.
* push and make an MR from the new branch
* rebase “the big commit” on top of the partial change.
* wash, rinse and repeat for each change, building each MR off its requisite branch.
The squashing part is vital because otherwise you enter merge conflict hell with the rebase.
How about:
I use this because you can have several commits marked e.g. "commit1". Then you make a final interactive rebase to squash them together.