git-如何为.gitignore添加内容,以使匹配不递归?

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

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

我已经为我的.gitignore文件尝试过此操作:

foo/
bar.txt

但是不幸的是git递归地应用了它,因此.gitignoreotherdir/foo/也被忽略了,这不是我想要的。

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

pauldoo asked 2019-10-15T22:03:22Z
2个解决方案
96 votes

解决方案是在2570928914373805005056条目上加一个斜杠:

/foo/
/bar.txt

(我以为在发布StackOverflow之前就已经尝试过了,但是显然我没有正确地尝试过,因为它工作得很好。)

pauldoo answered 2019-10-15T22:03:40Z
11 votes

从gitignore联机帮助页:

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

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

hermannloose answered 2019-10-15T22:04:17Z
translate from https://stackoverflow.com:/questions/2476718/how-to-i-add-something-to-the-gitignore-so-that-the-match-is-not-recursive