我想要排除名为foo
的文件夹中的所有内容,但名为bar
的文件夹中的内容除外。
foo
可以多次出现在目录结构中的任何位置。
bar
可以出现在foo
下的目录结构中的任何位置。
我试过
/**/foo/**
!/**/foo/**/bar/**
但它不起作用。它仍然忽略了所有foo
。它拒绝允许bar
。
我该如何解决这个问题?
答案 0 :(得分:1)
[以#开头的行]可选前缀“!”否定了这种模式;之前模式排除的任何匹配文件将再次包含在内。 如果排除该文件的父目录,则无法重新包含文件。
似乎这是不可能的。
答案 1 :(得分:0)
当你忽略一个目录时,你告诉git甚至不看那里。
**/foo/**
忽略foo/
中的所有内容,包括所有目录。 git永远不会看到嵌套的bar
目录更远,因为上面告诉它不检查foo
中的任何内容
**/foo/**
!**/foo/**/
!**/foo/**/bar/**
会这样做,因为你用〜覆盖了〜不看〜指令但是要查看所有目录〜。
当这个替代方案对您有意义时,you understand everything:
**/foo/**
!**/foo/**/bar/**
!*/