Julius Musseau <jul...@mergebase.com> writes:

> git squash [<commit>]
>
> Squashes <commit>..HEAD into a single commit. Replaces HEAD with the
> result.  If not specified, <commit> defaults to the current branch's
> upstream (a.k.a. @{upstream}).
>
> Rationale:
>
> This command provides an intuitive mechanism for in-place squash that
> doesn't drop dirty merge results.
>
> We call this an in-place squash because the state of all files and
> directories at HEAD does not change. Only the ancestory of HEAD
> changes: its (only) parent becomes the merge-base of <commit> and
> HEAD, removing all intermediate commits.

So is it essentially the same as

    git reset --soft $(git merge-base $commit HEAD)
    git commit

with some icing for coming up with a default log message?  The above
won't touch the working tree at all.


Reply via email to