git merge --squash
Today I learned a new Git command that's really useful. git merge --squash
takes all the changes from one branch and stages them on top of another branch, ready to be summarized.
Here's a sample workflow:
$ git checkout -b feature-branch
# Make changes across multiple commits
$ echo 1 > 1.txt
$ git add 1.txt
$ git commit -m 'Add first textfile'
$ echo 2 > 2.txt
$ git add 2.txt
$ git commit -m 'Add second textfile'
# Stage all changes on master
$ git checkout master
$ git merge --squash feature-branch
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: 1.txt
new file: 2.txt
# Summarize
$ git commit -m 'Add files 1 and 2'
This is a fast way to boil down a lot of WIP commits from a feature branch into a single commit on master.
Tweet