gitignore:忽略文件夹(任何地方),除了子文件夹(任何地方)

时间:2014-05-25 23:08:30

标签: git gitignore

我想要排除名为foo的文件夹中的所有内容,但名为bar的文件夹中的内容除外。

foo可以多次出现在目录结构中的任何位置。

bar可以出现在foo下的目录结构中的任何位置。

我试过

/**/foo/**
!/**/foo/**/bar/**

但它不起作用。它仍然忽略了所有foo。它拒绝允许bar

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

来自gitignore documentation

  

[以#开头的行]可选前缀“!”否定了这种模式;之前模式排除的任何匹配文件将再次包含在内。 如果排除该文件的父目录,则无法重新包含文件。

似乎这是不可能的。

答案 1 :(得分:0)

当你忽略一个目录时,你告诉git甚至不看那里。

**/foo/**

忽略foo/中的所有内容,包括所有目录。 git永远不会看到嵌套的bar目录更远,因为上面告诉它不检查foo中的任何内容

**/foo/**
!**/foo/**/
!**/foo/**/bar/**

会这样做,因为你用〜覆盖了〜不看〜指令但是要查看所有目录〜。

当这个替代方案对您有意义时,you understand everything

**/foo/**
!**/foo/**/bar/**
!*/