On Wed, Nov 02, 2016 at 02:46:04PM +0100, Jan Engelhardt wrote: > 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. As Konstantin pointed out, you can already discard interactively with "git checkout -p". It might be nice to be able to do both in the same run, and turn the "yes/no" decision into "yes/no/discard". In theory it should be easy, as the same code drives the hunk selector for both commands. It's just a matter of which command we feed the selected hunks to. I don't know if there would be corner cases around hunk-editing and splitting, though. The "add" phase should never touch the working tree file itself, so any hunks present from the initial list should still apply cleanly during the "discard" phase. -Peff