| Sigh. Rebase is very useful: * pre-processing step to a merge. The developer can see that the merge to main will be successful. * when the branch has cherry picked commits from main, those cherry picks will disappear from the feature branch's commit list. * rebase also includes the ability to combine commits (get rid of all those WIP commits) * rebase allows reorder of commits. rebase is so so much more than just rearrange commit pointers in some "bad" ways. Failure to include functionality just invites my old fallback when a rebase fails badly. git checkout main; git checkout -b new_branch; git diff -R old_branch | git apply; git add -A ; git commit Removing a tool just invites developers to work around the gap. |
This.
It's either a clean rebase, or messing the repo history with merge-commits, or merge with no ff and no commit onto HEAD followed by a local commit.
And rebase is far better and far cleaner and far simpler than any alternatives.
And rebase starts to become necessary as soon as two or more people start to work on the same mainline branch. After all, what rebase does is help get your branch (local or remote) updated and tied to the HEAD of a branch without screwing up the commit history. Isn't this one of the most basic usecases for a CVS?