git add -p <filename>
//git will begin to break down your file into what it thinks are sensible "hunks" (portions of the file). It will then prompt you with this question:
// OUTPUT >>> Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?
/*
Here is a description of each option:
y stage this hunk for the next commit
n do not stage this hunk for the next commit
q quit; do not stage this hunk or any of the remaining hunks
a stage this hunk and all later hunks in the file
d do not stage this hunk or any of the later hunks in the file
g select a hunk to go to
/ search for a hunk matching the given regex
j leave this hunk undecided, see next undecided hunk
J leave this hunk undecided, see next hunk
k leave this hunk undecided, see previous undecided hunk
K leave this hunk undecided, see previous hunk
s split the current hunk into smaller hunks
e manually edit the current hunk
You can then edit the hunk manually by replacing +/- by # (thanks veksen)
? print hunk help
If the file is not in the repository yet, you can first do git add -N <filename>.
Afterwards you can go on with git add -p <filename>.
Afterwards, you can use:
git diff --staged to check that you staged the correct changes
git reset -p to unstage mistakenly added hunks
git commit -v to view your commit while you edit the commit message.
*/
//Note this is far different than the git format-patch command, whose purpose is to parse commit data into a .patch files.