Many times, I used git reset --hard and found out later that all my changes had disappeared. I think this is because I do not fully understand what git reset --hard does: move the branch ref pointer to the given reference set HEAD to this ref Depending on the option: –soft: working dir and stage are not touched, useful when git reset --hard HEAD^ to change the content of the commit without having to re-add everything –mixed: working dir is not touched, but the stage is set to match the HE...