I understand the difference between ignored and untracked files, at least operationally, in git's standard workflow.
What I have a hard time understanding is why the designers of git felt that this was an important distinction to make.
IOW, why didn't they just go for automatically tracking every file that is not excluded by a .gitignore
or .git/info/exclude
or global excludesfile
rule?
Just to be clear: I'm not criticizing git's design. I'm sure there's a very good reason for this ignored/untracked distinction. I'd just like to understand the rationale behind it, from the point of view of design.
EDIT: Let me put it this way. Suppose there was a tool out there, let's call it twit
, that was identical to git
in every respect except that it had no concept of "untracked": a file could either be ignored or tracked. Can someone describe a scenario that would clearly show git
's superiority over twit
?
EDIT2: I realize now, in retrospect, that implicit in my question is the assumption that a "good reason" is also a "readily understandable" on. This assumption, however, doesn't hold up. It is possible that the shortcomings of twit
could be perceived only after working with it for some time, and that these shortcomings would then lead the users of twit
to improve into something that in the end looks like git
.