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

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

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


当前回答

其思想是将特定于项目的文件放入.gitignore文件中,并(如前所述)将其添加到存储库中。例如.pyc和.o文件,测试套件创建的日志,一些fixture等等。

对于您自己的安装程序创建的但不一定会出现在每个用户面前的文件(例如。swp文件,如果您使用vim,隐藏的ecplise目录等),您应该使用.git/info/exclude(如上所述)。

其他回答

当然,.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 add .gitignore
git commit -m "add .gitignore file"
git status

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

*

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

*
!.gitignore

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

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

其思想是将特定于项目的文件放入.gitignore文件中,并(如前所述)将其添加到存储库中。例如.pyc和.o文件,测试套件创建的日志,一些fixture等等。

对于您自己的安装程序创建的但不一定会出现在每个用户面前的文件(例如。swp文件,如果您使用vim,隐藏的ecplise目录等),您应该使用.git/info/exclude(如上所述)。