Git has three main states that your files can reside in: committed, modified, and staged
committed: files that have been saved / recorded to the repository’s history
staged: files that have been modified
modified: files that has been modified but have not yet been staged and committed to project’s history
Working Directory - where all the recent “unstaged” changes (since your last commit) reside
Staging Area where all your staged changes live ; stores information about what will go into your next commit (i.e. changes to be committed)
Git directory (repository) where all the changes throughout history of a git project are permanently stored; changes are recorded to the Git directory through the use of commits
The basic Git workflow goes something like this:
You modify files in your working directory
You stage the files, adding snapshots of them to your staging area
You do a commit, which takes the files as they are in the staging area and stores that snapshot permanently to your Git directory