21 January 2019
So you just spent 2 hours fixing a bug and made a bunch of other changes along the way. You took notes on your change and have a good mental model of what you did but you’re too lazy to walk through the changes and commit them individually.
This has happened to me a few times and resulted in some awry looking commits with dangling changes.
Turns out git has your back.
First, create a temporary branch that you’ll use to continue the tree of commits.
$ git branch staging-temp
Next, interactively apply the changes
$ git add -i
You can read the documentation for more tips on interactive mode: https://git-scm.com/book/en/v2/Git-Tools-Interactive-Staging.
Sometimes, I prefer to do this the other way around. I instead begin by stashing all the irrelevant changes and then iteratively merging them back into HEAD.
$ git stash save --patch
Don’t forget to merge the temporary branch back into main.