There are multiple copies of your files; the obvious one is your 'working copy', which is just the files on your machine that you work on. The second copy is in your local object store (in the .git directory). Git stores the committed data and it's metadata there. Then there's the remote copy on your git server if you push your commits to one.
Git uses the difference between the data in your 'working copy' and your object store to work out what you've changed and so needs commiting.