- Merge all commits from a specific branch into the current branch as a single commit:
git squash source_branch
- Squash all commits starting with a specific commit on the current branch:
git squash commit
- Squash the
nlatest commits and commit with a message:
git squash HEAD~n "message"
- Squash the
nlatest commits and commit concatenating all individual messages:
git squash --squash-msg HEAD~n
git-squash [<--squash-msg>] <source-branch|commit ref> [<commit-message>]
Squash the N last changes in the current branch, where N is the range of commits from the given ref up to HEAD.
Branch to squash on the current branch.
<commit reference> A commit reference (has to be from the current branch) can also be used as the first argument. A range of commits sha..HEAD will be squashed.
Commit the squash result with the concatenated squashed committed messages. This option can not be used together with <commit-message>.
If commit-message is given, commit the squashed result, otherwise the squash remains just added to the index and is not committed.
# squash changes and follow up with separate commit step $ git squash my-other-branch Updating a2740f5..533b19c Fast-forward Squash commit -- not updating HEAD my-changed-file | 1 + 1 file changed, 1 insertion(+) $ git commit -m "New commit without a real merge" # squash and commit with given message $ git squash HEAD~3 "Commit message" # squash and commit and concatenate all messages $ git squash --squash-msg @~3
Written by Jesús Espino <email@example.com>