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

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

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


当前回答

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

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

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

其他回答

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

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

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

当然,.gitignore文件会显示在状态中,因为它是未跟踪的,git将它视为一个美味的新文件!

然而,由于.gitignore是一个未跟踪的文件,当你把它放在.gitignore中时,它是一个被git忽略的候选文件!

所以,答案很简单:只需添加一行:

.gitignore # Ignore the hand that feeds!

到你的。gitignore文件!

而且,与August的回答相反,我应该说.gitignore文件不应该在您的存储库中。它只是碰巧可以,这通常是方便的。这可能就是.gitignore被创建为.git/info/exclude的替代品的原因,后者没有被存储库跟踪的选项。无论如何,如何使用.gitignore文件完全取决于您。

作为参考,请查看kernel.org上的gitignore(5) manpage。

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

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

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

我发现忽略烦人的. ds_store文件的最佳位置是在.git/info/exclude文件中。

当您在IntelliJ中设置git存储库时,它似乎会自动执行此操作。

这似乎只适用于当前目录,以便让Git忽略存储库中的所有文件。

更新此文件

.git/info/exclude 

用您的通配符或文件名

* pyc * swp 赶紧*