Git Squash - ashish9342/FreeCodeCamp GitHub Wiki
This is an awesome feature of rebase
that can be used in the interactive
mode. To squash the last n commits into one, run the following command:
git rebase -i HEAD~n
That will open up a text-editor with something similar to the following:
pick commit_1
pick commit_2
pick commit_3
...
pick commit_n
# Bunch of comments
Leave the first commit alone, and change the rest of the pick
s to squash
. Save and exit the editor.
So if you wanted to squash the last three commits, you'll first run git rebase -i HEAD~3
and then you'll want to edit your commits to look something like this:
pick dd661ba Commit 1
squash 71f5fee Commit 2
squash f4b4bf1 Commit 3
If you've already pushed to a remote before squashing your commits, you'll have to push to the remote again, with the -f
flag, otherwise git will throw an error at you.
It is strongly suggested that you read the information in the opened file as there are many things you can do.