Squashing Commits in Middle

If the commits to be squahed are not the last few commits, an interactive rebase is needed. Similar to how we reword commits in middle, we start an interactive rebase, but this time instead of reword, we change the pick to s or squash for the second commit meaning squash the second up into the first commit.

pick d310b7c35 WIP: Fix blah blah
s f3ee84093 WIP: Continue Fix blah blah
pick 07ec28ec2 Fix another stupid bug

After saved and closed the Editor, Git then will popup the Editor asking for the new commit message of the squashed commits.

# This is a combination of 2 commits.
# This is the 1st commit message:

WIP: Fix blah blah

# This is the commit message #1:

WIP: Continue Fix blah blah

We now need to replace the WIP: Fix blah blah with a new commit message Fix blahblahand remove the WIP: Continue Fix blah blah.

Once finished it looks like below (I created a before_rebase branch so we can see it more clearly):

The fixup option: fixup is very similar to squash except that fixup uses the commit message of the first commit whereas squash requires a new commit message.

Last updated