The main differences between the three reset options are how they handle the staging area and the working directory:
Keeps changes staged, leaves the working directory unchanged.
Unstages changes, leaves the working directory unchanged.
Discards changes completely, modifies the working directory to match the specified commit.