You indeed have to recommit everything (which I prefer) but you don't have to reset anything (since nothing is in the staging area).
>> If you end up staging the wrong hunk, then you will have to reset and recommit
> you don't have to reset anything
You have to reset the branch pointer to the previous commit, but I think using the --amend switch may do that for you.
If you exit the commit message editor so that it retuns a non-zero exit code to git then nothing is committed and nothing is staged.
If you end up staging the wrong hunk, then you will have to reset and recommit. With git add -p, you would only need to reset the hunk.