Git 将所有文件分成3类:已追踪的、被忽略的以及未追踪的。
已追踪的(Tracked)
已追踪的文件是指已经在版本库中的文件,或者是已暂存到索引中的文件。如果想将新的文件 somefile 添加为已追踪的文件,执行 git add somefile 。
被忽略的(Ignored)
被忽略的文件必须在版本库中被明确声明为不可见或被忽略,即使它可能会在你的工作目录中出现。
未追踪的(Untracked)
未追踪的文件是指那些不在前两类中的文件。Git把工作目录下的所有文件当成一个集合,减去已追踪的文件和被忽略的文件,剩下的部分作为未追踪的文件。
在一个新的工作目录和版本库中处理一些文件来探讨这些不同类别的文件。
$ git status
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)
$ echo 'new data' > data
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
data
nothing added to commit but untracked files present (use "git add" to track)
最初,目录里没有文件,已追踪的文件和被忽略的文件都是空的,因此未追踪的文件也是空的。一旦创建了一个data文件,git status 就会报告一个未追踪的文件。
为了让 Git 忽略目录中的文件,只需要将该文件名添加到一个特殊的文件 .gitignore 中就可以了。
$ touch main.o
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
data
main.o
nothing added to commit but untracked files present (use "git add" to track)
$ echo main.o > .gitignore
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
data
nothing added to commit but untracked files present (use "git add" to track)
这样 main.o 已经被忽略了,但是 git status 现在显示一个新的未追踪的文件 .gitignore 文件对 Git 有特殊意义,但是它和版本库中的任何其他普通文件都是同样管理的。