The git reset command is a complex and versatile tool for undoing your changes. There are three main forms of invocation. These formats correspond to the command line arguments –soft, -mixed, and -hard. Each of the three arguments corresponds to Git’s three internal state management systems.
The mechanism, commit tree (HEAD), staging index, and working directory.
Git reset at least changes where the current branch (HEAD) points. The difference between –mixed and –soft is whether the index also changes.
–soft: Revert the changes, the changes will remain staged (index).
–mixed (default): Uncommit + unstage changes, The changes remain in the working tree.
–hard: Uncommit + Unstaging + Delete Changes, nothing left.
Discard the files in the working area we will use git checkout <filename> if you want all git checkout.
Discard the staged (after git add .) files using the git_reset HEAD * or the git_reset HEAD filename Remove the committed messages using git reset HEAD~1
git reset --soft HEAD~1 --> --soft option will remove commit still files kept in staged area and working area.
git reset HEAD~1 --> by default it's a mixed option it will undo your staging area and keep it working directory
git reset --hard HEAD~1 --> --hard option will remove commits and also files removed in the staged area and working area both.