I find myself looking for or double checking certain git commands at varying frequencies. I made this list to help myself, it’s a bonus if it helps you too!
None of these recipes were invented by me. I’ll try to include links if I have saved them in my notes, if not, sorry but thank you internet stranger for making life a little bit better.
Cleanup commits in a feature branch
I have lost code that I have written and saved but not committed, because the development server I used crashed. So, I’ve learned to commit often. But sometimes (read, most times) I want to save work that is not ready for any human to ever see. I don’t want all these intermediate commits to show up in a pull request.
To make it concrete: I have a branch dirty
that branched-off from master
, and I have possibly merged master
into dirty
several times, and made several commits to dirty
. I want to now create a “clean” pull request by creating a branch clean
that has all the commits of dirty
squashed into one. Below is a pretty safe git recipe for that (there are several ways to do it, but below is the one I prefer).
Let’s first make sure we have the latest master
.
git checkout master
git pull
Let’s branch off the latest master
into clean
.
git checkout -b clean
Let’s bring changes in dirty
into clean
, but squash them.
git merge --squash dirty
You can now commit changes in clean
, with a unified and meaningful commit message, by deleting all the intermediate commit and merge messages.
git commit
Now, you can create a pull request from the clean
branch that hides all your commit transgressions in dirty
.