git commit -p | —patch

git commit -p

-p --patch
Use the interactive patch selection interface to
choose which changes to commit. See git-add[1] for
details.

git add -p

-p --patch
Interactively choose hunks of patch between the
index and the work tree and add them to the index.
This gives the user a chance to review the
difference before adding modified contents to the
index.
This effectively runs add --interactive, but
bypasses the initial command menu and directly
jumps to the patch subcommand.

INTERACTIVE MODE

Has 6 subcommands:

*** Commands ***
      1: status       2: update       3: revert       4: add untracked
      5: patch        6: diff         7: quit         8: help
    What now> 1

patch

This lets you choose one path out of a status
like selection. After choosing the path, it
presents the diff between the index and the
working tree file and asks you if you want to
stage the change of each hunk. You can select one
of the following options and type return:

y - stage this hunk
n - do not stage this hunk
s - split the current hunk into smaller hunks
q - quit; do not stage this hunk or any of the remaining ones
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
e - manually edit the current hunk
? - print help