Well for me, having
git reset --hard
just reset the submodule to the state where it checked out, not necessary to the main's repo referenced commit/state. I'll still have "modified contents" like OP said. So, in order to get the submodule back to the corrects commit, I run:
git submodule update --init
Then when I do git status
, it's clean on the submodule.