如何在.gitignore中添加一些东西,以便匹配不是递归的?

时间:2010-03-19 11:12:59

标签: git ignore gitignore

如何向.gitignore添加内容以使匹配不递归?

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

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

foo/
bar.txt

但不幸的是git以递归的方式应用了这一点,因此otherdir/bar.txtotherdir/foo/也会被忽略,这不是我想要的。

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

2 个答案:

答案 0 :(得分:97)

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

/foo/
/bar.txt

(我以为我在发布StackOverflow之前尝试过这个,但很明显我没有正确地尝试过,因为这很有效。)

答案 1 :(得分:11)

来自gitignore联机帮助页:

  

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

因此,{。{1}}作为.gitignore中的第一行将清除以前的所有模式。