我刚刚在我的新项目的根上做了一个git初始化。

然后我创建了一个.gitignore文件。

现在,当我输入git status时,.gitignore文件出现在未跟踪文件列表中。为什么呢?


当前回答

最终用户很可能希望Git忽略”。gitignore”文件,因为Eclipse创建的IDE特定文件夹可能与NetBeans或其他IDE不同。因此,为了保持源代码与IDE的对立性,很容易忽略一个自定义git,因为每个开发人员可能使用不同的IDE,而不与整个团队共享。

其他回答

.gitignore是关于忽略其他文件。Git是关于文件的,所以这是关于忽略文件的。然而,当git处理文件时,这个文件需要作为列出其他文件名的机制。

如果它被称为.the_list_of_ignored_files,可能会更明显一些。

一个类比是你不想做的待办事项列表。除非你把它们列在某种“待办事项”清单上,否则你不会知道它们。

在我的例子中,我想排除一个现有文件。 仅修改。gitignore无效。 我是这样做的:

git rm --cached dirToFile/file.php
vim .gitignore
git commit -a

通过这种方式,我从缓存中清除了我想要排除的文件,并将其添加到.gitignore。

你可以在。gitignore文件中加入一行。gitignore。这将导致git忽略.gitignore文件。我不认为这是个好主意。我认为ignore文件应该被版本控制和跟踪。我只是为了完整起见。

.gitignore文件应该在您的存储库中,因此它确实应该被添加和提交,正如git状态所建议的那样。它必须是存储库树的一部分,这样对它的更改就可以合并等等。

因此,将它添加到您的存储库中,它不应该被忽略。

如果你真的想要,你可以添加.gitignore到.gitignore文件,如果你不想让它被提交。然而,在这种情况下,最好将忽略添加到.git/info/exclude中,这是一个特殊的本地签出文件,它的工作方式就像.gitignore,但不会显示在“git状态”中,因为它在.git文件夹中。

参见https://help.github.com/articles/ignoring-files

注意以下“问题”有时您想添加目录,但这些目录中没有文件。简单的解决方案是创建一个包含以下内容的.gitignore:

*

这个接缝工作得很好,直到您意识到目录没有添加到存储库(正如预期的那样)。这样做的原因是.gitignore也将被忽略,因此目录是空的。因此,你应该这样做:

*
!.gitignore