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
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
git checkout master
Let’s branch off the latest
git checkout -b clean
Let’s bring changes in
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.
Now, you can create a pull request from the
clean branch that hides all your commit transgressions in