git忽略特定types的所有文件,除了特定子文件夹中的文件

我有这样的目录结构:

    • 文件夹1
      • abc.json
      • def.json
      • somedir
        • more.json
    • 文件夹2
      • qwe.json
      • rty.json
    • 规范
      • mock1.json
      • mock2.json
      • somedir
        • more_mocks.json

现在使用一个.gitignore我想忽略所有*.json文件,除了spec 。 我不想在folder1folder2使用.gitignore ,因为这里有很多,他们会被添加到很多,我相信我会忘记移动正确的.gitignore文件。

另外,可能会有更多的嵌套json文件的目录,这个规则也需要应用到所有的子目录。

那么如何忽略一个types的所有文件,除了某个子目录呢?

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

http://schacon.github.com/git/gitignore.html

 *.json !spec/*.json