Git忽略子目录中的某些文件,但不是所有文件
我的结构与以下类似:Git忽略子目录中的某些文件,但不是所有文件,git,gitignore,Git,Gitignore,我的结构与以下类似: /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/…”路径下的任何.json文件,但是“/data/
/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/…”路径下的任何.json
文件,但是“/data/”有时包含子目录
我的理解是,gitignore中的一个简单的data/*.json
将只匹配一个目录,因为*
与/
不匹配,如“模式格式”,bullet 6:
否则,git将模式视为适合fnmatch(3)使用的shell glob,并带有FNM_路径名标志:模式中的通配符将与路径名中的/不匹配。例如,“Documentation/*.html”匹配“Documentation/git.html”,但不匹配“Documentation/ppc/ppc.html”或“tools/perf/Documentation/perf.html”
有没有一种简单的方法可以做到这一点,或者我需要在每个子目录中明确地主动添加gitignore文件?我最近写了一篇关于这个问题的文章。看 基本上,您需要在
/data/
目录中放置一个带有*.json
的.gitignore
UPD:由于git(如果您使用的是msysgit),因此可以使用双星模式,如
/data/***/.json
,您可以将数据/***/.json
放在目录下的.gitignore
中,以防止不同目录下的多个.gitignore
文件
***/
-匹配任何子目录计数(包括当前子目录)
示例:data/***.json
记录将忽略data/1.json
,data/subfolder/2.json
,data/./../3.json
此模式适用于数据子文件夹,仅忽略png和jpg文件:
**/data/**/*.png
**/data/**/*.jpg
我添加了.gitignore
文件,其中包含*.json
,但是如果我更改其中一个文件,并运行git status
,我会看到它们列为“更改未暂存”。.gitignore
文件在生效前是否需要提交?出现这种情况是因为以前跟踪过文件吗?以前跟踪过的文件将被跟踪,无论中有什么内容。gitignore
最新的答案是:@CaptainBlammo我在使用它,它有效,可能是你做错了什么?有信息:它还将忽略/bla/data/***.json
和/bla/bla/data/***.json
<代码>/data/***。应使用json
。