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

pau*_*doo 59 git ignore gitignore

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

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

我试过这个.gitignore文件:

foo/
bar.txt
Run Code Online (Sandbox Code Playgroud)

但不幸的是混帐适用这个递归,以便otherdir/bar.txtotherdir/foo/也被忽略,这不是我想要的.

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

pau*_*doo 100

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

/foo/
/bar.txt
Run Code Online (Sandbox Code Playgroud)

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


her*_*ose 11

来自gitignore手册页:

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

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