History repeats itself

alphacyberranger@lemmy.world to Programmer Humor@programming.dev – 467 points –
35

You are viewing a single comment

I’m sorry but that’s incorrect. “Rewriting the commit history” is not possible in git, since commits are immutable. What rebase actually does is reapply each commit between upstream and head on top of upstream, and then reset the current branch to the last commit applied (This is by default, assuming no interactive rebase and other advanced uses). But don’t take my word for it, just read the manual. https://git-scm.com/docs/git-rebase

"Reapply" is rewriting it on the other branch. The branch you are rebasing to now has a one or multiple commits that do not represent real history. Only the very last commit on the branch is actually what the user rebasing has on their computer.

Cherry picking also rewrites the commits. This is equivalent to rebasing:

git branch -f orig_head
git reset target
git cherry-pick ..orig_head