Git忽略子目录中的某些文件,但不是全部
我有一个类似于以下的结构:
/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 / …'path下的任何 .json
文件,但'/ data /'有时包含子目录。
我的理解是,gitignore中的一个简单的data/*.json
。json将只匹配一个目录,因为*
不匹配/
,如http://git-scm.com/docs/gitignore所述 ,“模式格式”,子弹#6:
否则,git把这个模式当作一个适合fnmatch(3)用FNM_PATHNAME标志消费的shell glob:模式中的通配符不会匹配path名中的/。 例如,“Documentation / *。html”匹配“Documentation / git.html”,但不匹配“Documentation / ppc / ppc.html”或“tools / perf / Documentation / perf.html”。
有没有一个简单的方法来做到这一点,或者我需要明确地在每个子目录中主动添加gitignore文件?
我最近写了一篇关于这个问题的文章。 看到这里 。
基本上你需要的是把一个.gitignore
和*.json
放在/data/
目录下。
UPD :由于git 1.8.4 ( 1.8.2,如果你使用的是msysgit),可以使用双星模式,比如/data/**/*.json
你可以在你的.gitignore
的/root
目录下放置data/**/*.json
.gitignore
,以防止在不同目录下有多个.gitignore
文件
**/
– 匹配任何数量的子目录(包括当前)
例如: data/**/*.json
data/1.json
logging将忽略data/1.json
, data/subfolder/2.json
, data/../../3.json