Soft
git reset --soft <commit>
Reset to specified commit
Changes remain staged
Unchanged
Reorganizing commits, preparing for a new commit
Mixed
git reset --mixed <commit>
Reset to specified commit
Changes are unstaged
Unchanged
Editing changes without removing from working directory
Hard
git reset --hard <commit>
Reset to specified commit
Changes are removed
Reset to specified commit
Completely discarding changes, resetting to a previous state