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”
Rebasing shines for local commits not remote commits. IE rebase your commits onto the remote or amend the previous commit (yes that’s actually a rebase)
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:
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.
Rebasing shines for local commits not remote commits. IE rebase your commits onto the remote or amend the previous commit (yes that’s actually a rebase)