How you could somewhat rebase manually (to understand the effect; or because you like to handle the merge conflicts more granular or be more selective):
We assume we have the branch “Feat” which was started on an old version of “Main”, and now want to rebase it:
- Rename “Feat” to “Old” (does not happen during rebase, but we kinda need it for this demonstration)
- Create “Feat” at the newest (or wherever you want) commit of “Main”
- Cherrypick all commits from “Old” into “Feat”
Et viola - you kinda manually rebased “Feat” on “Main”
Unless you really hate the commits that say “merged branch X into Y” I never saw rebasing as any easier than merging.