Design a site like this with
Get started

Squashing Commits

In Lab 5 we are tasked with refactoring our code and committing our changes to a new branch and then squashing the commits with a rebase and amending commit comments to reflect our changes. It goes a little something like this:

First I created a new branch called refactoring based off master and began refactoring code. I ended up extracting a piece of code which ignored urls and turned it into a function which returns and array rather than modify an existing one. I then took all the functions, structs and global flag variables and put them into a utils (utilities) folder as I took a scripting approach by shoving all the logic into a single file, cause you know.. why not? Anyway, every change I made I would commit them to my local repository and when the refactoring was complete I was ready to squash my commits and push it to github.

First I ran git rebase master -i whilst on the refactoring branch and was provided with a menu that allowed me to ‘pick’ and ‘squash’ commits. The first commit is mandatory to be picked so I let that option alone and ‘squashed’ the rest of my commits. Now all my commits are squashed into a single commit but my commit message is misleading so I run git commit -amend and am treated to another menu where I can change my commit messages, so I changed the first commit message (the commit I squashed my other changes into) to something more clear.

I checked my git log to see the changes made and saw all my commits and what it was squashed into and was able to checkout back to master and merge it with refactoring and push it to the master repo.

Once pushed my final git log looked something like this:

Maybe I should clean up my PRs with this newly found power…


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: