Re: [PATCH RFC] rebase: add --revisions flag
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:47:52
Björn Steinbrink [off-list ref] writes:
"merge --squash" is one of the things I really dislike, because it turns off the "history" part of the merge. You can say "Merging in git is about histories, merging in svn is about changes only" to describe the major difference for the merge commands in the two systems... "But then there's --squash which turns git into svn".
I agree with this to some degree, but I do not offhand think of a better
alternative.
At the first sight, it looks as if what "merge --squash" does was
implemented as a new option "--squash" to the "merge" command merely
because the way _how_ it internally needs to compute the result was
already available in the implementation of "merge" command, and not
necessarily because _what_ it does was conceptually consistent with the
way "merge" works.
But at the conceptual level, "merge --squash" is a short-hand for this
command sequence:
git rebase -i HEAD that-branch
... make everything except the first one into "squash"
git checkout - ;# come back to the original branch
git merge that-branch ;# fast forward to it
So after all, it is "merge it after squashing them".