gitignore-Git忽略子目录中的某些文件,但是n

我的结构类似于以下内容:

/root/
/root/data/
/root/data/script.php
/root/data/some.json
/root/data/feature/one.json
/root/data/feature/two.json
/root/data/other-feature/one.json
/root/data/other-feature/important-script.php

我希望git忽略“ / data / ...”路径下的任何data/*.json文件,但“ / data /”有时包含子目录。

我的理解是,简单的gitignore data/*.json仅会匹配一个目录,因为*/不匹配,如[http://git-scm.com/docs/gitignore,]“模式格式”,项目符号#所述。 6:

否则,git将模式视为适合Fnmatch(3)使用FNM_PATHNAME标志使用的shell全局变量:模式中的通配符将与路径名中的/不匹配。 例如,“ Documentation / *。html”匹配“ Documentation / git.html”,但不匹配“ Documentation / ppc / ppc.html”或“ tools / perf / Documentation / perf.html”。

有没有一种简单的方法可以执行此操作,还是我需要在每个子目录中明确地主动添加gitignore文件?

anonymous coward asked 2019-10-08T15:50:37Z
3个解决方案
78 votes

我最近写了一篇有关此类问题的文章。 看这里。

基本上,您需要将一个/data/**/*.json*.json放在/data/目录中。

UPD:由于git 1.8.4(如果使用的是msysgit,则为1.8.2),因此可以使用双星模式,例如/data/**/*.json

Ivan Danilov answered 2019-10-08T15:51:10Z
19 votes

您可以将data/**/*.json放在data/1.json目录中的data/**/*.json中,以防止在不同目录中存在多个data/subfolder/2.json文件

data/**/*.json-匹配任意数量的子目录(包括当前目录)

示例:data/**/*.json记录将忽略data/1.jsondata/subfolder/2.jsondata/../../3.json

E.Monogarov answered 2019-10-08T15:51:54Z
1 votes

此模式对我来说适用于数据子文件夹,而只忽略png和jpg文件:

**/data/**/*.png
**/data/**/*.jpg
Aqib Mumtaz answered 2019-10-08T15:52:25Z
translate from https://stackoverflow.com:/questions/6794717/git-ignore-certain-files-in-sub-directories-but-not-all