Basic difference between various options of git reset command are as below.
--soft: Only resets the HEAD to the commit you select. Works basically the same as git checkout but does not create a detached head state.
--mixed (default option): Resets the HEAD to the commit you select in both the history and undoes the changes in the index.
--hard: Resets the HEAD to the commit you select in both the history, undoes the changes in the index, and undoes the changes in your working directory.