Julius Musseau [off-list ref] writes:
I'm embarrassed to realise your approach matches the top-voted
stack-overflow answer on the subject:
https://stackoverflow.com/a/5201642
I personally do not visit stack-overflow, but I am happy to see that
there are people who remember "right" way to do this among the folks
who do.
"reset --soft" was invented exactly for this use case, and you can
use it even with dirty working tree and dirty index (they are left
intact).