`git reset --hard` doesn't remove unreferenced commits or rewrite the reflog so I don't think that would do it. Something like `git reset && git gc` would have to be done.
And git gc doesn't collect any garbage less than two weeks old by default, either.
But it does remove current uncommitted changes.
And git gc doesn't collect any garbage less than two weeks old by default, either.