Как в git создать коммит с выборочными изменениями

Допустим, вы дисциплинированный и аккуратный программист. Все правки кода строго привязываете к задачам и ничего лишнего и не относящегося к задаче в коммит не попадает. Но как быть, если в файл были внесены правки относящиеся сразу к нескольким задачам? Можно ли теперь изменения одного файла разделить на несколько коммитов? Можно:

git add -p

Также можно указать конкретный файл:

git add -p src/script.php

Далее в интерактивном режиме будут показываться куски кода и задаваться вопрос, что с этим делать. Доступны следующие действия:

y - stage this hunk
n - do not stage this hunk
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
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help

Как правило будет достаточно y, n, s и e. Особенно интересен вариант с e, при выборе которого открывается текстовый редактор с возможностью вручную отредактировать фрагмент, который попадёт в коммит.