66

如何添加一些东西以.gitignore使匹配不是递归的?

例如,我希望忽略当前目录中的目录foo和文件bar.txt,而不是子目录中存在的任何文件。

我已经为我的.gitignore文件尝试了这个:

foo/
bar.txt

但不幸的是 git 递归地应用它,所以otherdir/bar.txtotherdir/foo/被忽略了,这不是我想要的。

(git中是否有一个命令可以显示所有被忽略的文件,并引用.gitignore负责被忽略的文件的文件?这对于调试很有用。)

4

2 回答 2

110

.gitignore解决方案是在条目上放置一个前导斜杠:

/foo/
/bar.txt

(我以为我在发布到 StackOverflow 之前尝试过这个,但显然我没有正确尝试过,因为它非常有效。)

于 2010-03-19T11:22:03.003 回答
13

从 gitignore 手册页:

一个可选的前缀!这否定了模式;任何被先前模式排除的匹配文件都将再次包含在内。如果否定模式匹配,这将覆盖较低优先级的模式源。

因此!*,您的 .gitignore 中的第一行将清除所有以前的模式。

于 2010-03-19T11:24:00.130 回答