In this blog post, I will show you how to squash git commits into a single commit.
Goal
Consider that I have three commits below,
commit 9a0fb88031d65(HEAD -> master) Third commit commit 598202a5e1ce0 Second commit commit 8bdd989b96368 First commit
Now, I want to Squash both of them into a single commit i.e; I want to squash Third commit
into Second commit
. Use the command below,
git rebase -i HEAD~2
This will open up a shell window as shown below
pick 598202a Second commit pick 9a0fb88 Third commit
and you need to replace pick
with s
as shown below and save and exit.
pick 598202a Second commit s 9a0fb88 Third commit
This will open up a shell window as shown below,
# This is a combination of 2 commits. # This is the 1st commit message: Second commit # This is the commit message #2: Third commit
Just delete the squashed commit message and other text can also be deleted as below; save and exit,
Second commit
Finally, we have squashed Third commit into Second commit. Now, if you do git log
you should see that the commit has been squashed as shown below,
commit aa1b27974570c85(HEAD -> master) Second commit commit 8bdd989b963682a0 First commit
Squashing more than two commits
If I need to do this for more than two commits into a single one, then increase the rebase count on HEAD, for instance, if you need to squash 3
commits into 1
then use command below,
git rebase -i HEAD~3
And while picking up you need to replace pick
with s
on both the commits which needs to be squashed. That’s it.
Checkout more tags @gitopscentral.com