Earlier quoted context omitted.
That's why it's a flag. You could do git reset HEAD^ && git stash instead Also, git reset ---hard HEAD^ deletes nothing. The commit HEAD was pointing is not deleted. You have to work really hard to delete that commit accidentally
It does delete whatever uncommitted changes you had.
it'd be trivial to modify that behavior to refuse to continue in such a case if you want double seatbelts
also, if the changes were staged they were recorded in the database and remain there