When you modify a file in your repository, the change is initially unstaged. In order to commit it, you must stage it—that is, add it to the index—using
git add. When you make a commit, the changes that are committed are those that have been added to the index.
git reset changes, at minimum, where your current branch is pointing. The difference between
--soft is whether or not your index is also modified. So, if we're on branch
master with this series of commits:
- A - B - C (master)
C and the index matches