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