Git忽略所有特定类型的文件,除了特定子文件夹中的文件

我有一个这样的目录结构:

    <李>根
      <李> folder1
      • abc.json
      • def.json
      • <李> somedir
        • more.json
      <李> folder2
      • qwe.json
      • rty.json
      <李>规范
      • mock1.json
      • mock2.json
      • <李> somedir
        • more_mocks.json

现在使用.gitignore,我想忽略所有的*.json文件,除了在spec。我不想在folder1folder2中使用.gitignore,因为它们有很多,而且它们会被添加到很多地方,而且我确信我会忘记移动正确的.gitignore文件。

此外,可能存在更多带有JSON文件的嵌套目录,该规则也需要应用于所有子目录。

那么,如何忽略除特定子目录外的所有类型的文件呢?

219639 次浏览
参数的可选前缀! 模式;排除的任何匹配文件 以前的模式将变成 包括了。如果是否定的模式 匹配,这将覆盖较低

.优先模式源

https://git-scm.com/docs/gitignore

*.json
!spec/*.json

如果使用模式忽略文件,但有异常,则在异常前加上感叹号(!)。例如:

*.json
!spec/*.json

更多信息:https://riptutorial.com/git/example/911/exceptions-in-a--gitignore-file