Today (as with many times before), I was reviewing some code I had changed and realized, “I want some of these lines but don’t want these other lines in this commit.” Enter
git add -p. This starts
git addition in interactive mode, so that you can select what you want and what you don’t.
With each change, I can choose what to do with it - I can accept it (pressing
y which will stage it for the commit, hit
n to not stage it, or
s to split it). If the split one isn’t good enough, you can hit
e to edit. This opens up your favorite editor with the patch (and with a small instruction list at the bottom).
After this process, if you do a
git status, you’ll see that some of the changes are already staged for commit (you can do a
git diff --cached to see those), and others are left un-staged.