This command rebases the current branch onto the specified branch, such as 'main', while preserving merge commits.
Unlike the default rebase which flattens the merge history, the --rebase-merges option keeps the topology of merge commits intact. This is particularly useful for maintaining a clear history of merges and their resolutions as if they were replayed on top of the new base.
Variants of this command include using --interactive (or -i) to manually select which commits to rebase, and including a shorter flag --rebase-merges=<mode> where <mode> could be 'rebase-cousins' or 'no-rebase-cousins', to control the behavior of rebasing branches that don't have the upstream as a direct ancestor.