如何添加一些东西到.gitignore,使匹配不recursion?

如何添加一些东西到.gitignore ,使匹配不recursion?

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

我已经试过这个我的.gitignore文件:

 foo/ bar.txt 

但不幸的是gitrecursion地应用这个,所以otherdir/bar.txtotherdir/bar.txt otherdir/foo/也会被忽略,这不是我想要的。

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

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

 /foo/ /bar.txt 

(我以为我在StackOverflow上发布之前就试过了,但是显然我没有正确地尝试过,因为这样做完美无缺。)

从gitignore手册:

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

所以!*作为你的.gitignore的第一行将清除所有以前的模式。