There are several "areas" (my term) that can store files within a single Git repository.


Things that are actually checked in to the repository.


This is the staging area, an intermediate step between the working directory and the repository.

When you do a commit, it commits everything that's in the index.

working tree

untracked files


various diffs

rather useful graphic

discard changes

see here!

see also