Quoting Linus Torvalds when asked how many files Git can handle during his Tech Talk at Google in 2007 (43:09):
…Git tracks your content. It never ever tracks a single file. You cannot track a file in Git. What you can do is you can track a project that has a single file, but if your project has a single file, sure do that and you can do it, but if you track 10,000 files, Git never ever sees those as individual files. Git thinks everything as the full content. All history in Git is based on the history of the whole project…
Yet, when you dive into the Git book, the first thing you are told is that a file in Git can be either tracked or untracked. Furthermore, it seems to me like the whole Git experience is geared towards file versioning. When using
git diff or
git status output is presented on a per file basis. When using
git add you also get to choose on a per file basis. You can even review history on a file basis and is lightning fast.
How should this statement be interpreted? In terms of file tracking, how is Git different from other source control systems, such as CVS?