如何向.gitignore
添加内容以使匹配不递归?
例如,我希望忽略当前目录中的目录foo
和文件bar.txt
,但不要忽略子目录中存在的任何目录。
我已经为我的.gitignore
文件尝试了这个:
foo/
bar.txt
但不幸的是git以递归的方式应用了这一点,因此otherdir/bar.txt
和otherdir/foo/
也会被忽略,这不是我想要的。
(git中是否有一个命令向我显示所有被忽略的文件,并引用负责该文件被忽略的.gitignore
文件?这对调试很有用。)
答案 0 :(得分:97)
解决方案是在.gitignore
条目上放置一个前导斜杠:
/foo/
/bar.txt
(我以为我在发布StackOverflow之前尝试过这个,但很明显我没有正确地尝试过,因为这很有效。)
答案 1 :(得分:11)
来自gitignore联机帮助页:
可选前缀!否定了这种模式;之前模式排除的任何匹配文件将再次包含在内。如果否定模式匹配,则将覆盖较低优先级模式源。
因此,{。{1}}作为.gitignore中的第一行将清除以前的所有模式。