Current version: 2.10.2 Example workflow: * I would do a global substitution across a source tree, e.g. `perl -i -pe 's{OLD_FOO\(x\)}{NEW_BAR(x, 0)}' *.c` * Using `git add -p`, I would verify each of the substitutions that they make sense in their respective locations, and, based on that, answer "y" or "n" to the interactive prompting to stage good hunks. * When done with add-p, I would commit the so-staged hunks, and then use `git reset --hard` to discard all changes that were not acknowledged during add-p. Being able to discard hunks (reset working copy to index contents) during add-p would alleviate the (quite broad) hard reset. Similar approach: * global substitution * Using `git add -p`, some hunks may warrant some more editing, doable with the "e" command. The index would be updated with the extra change, but the working copy be left as-is. * When rerunning `git add -p` in such a state, a difference is shown again for such edited spots, which I would like to discard (bring the working copy into sync with index).