I have been working with git for just over a month. Indeed I have used reset for the first time only yesterday, but the soft reset still doesn\'t make much sense to me.
One possible usage would be when you want to continue your work on a different machine. It would work like this:
Checkout a new branch with a stash-like name,
git checkout -b _stash
Push your stash branch up,
git push -u origin _stash
Switch to your other machine.
Pull down both your stash and existing branches,
git checkout _stash; git checkout
You should be on your existing branch now. Merge in the changes from the stash branch,
git merge _stash
Soft reset your existing branch to 1 before your merge,
git reset --soft HEAD^
Remove your stash branch,
git branch -d _stash
Also remove your stash branch from origin,
git push origin :_stash
Continue working with your changes as if you had stashed them normally.
I think, in the future, GitHub and co. should offer this "remote stash" functionality in fewer steps.