求助:Git忽略目录a/b但排除其中所有foo.js文件的配置方法
Gitignore配置问题解决:忽略a/b目录但保留其中的foo.js文件
你的配置无效的核心原因是:当Git识别到a/b/*规则时,会直接忽略a/b下的所有直接子目录(比如c、d、e、f),不会再扫描这些子目录里的内容,因此后面的!a/b/**/foo.js规则根本不会被触发。
要实现「忽略a/b下所有内容,但保留所有foo.js」的需求,需要让Git能扫描a/b的子目录,再针对性排除文件。以下是两种可行的配置方案:
方案一
# 忽略a/b下所有层级的文件和子目录内容,但保留目录结构 a/b/**/* # 排除所有foo.js文件 !a/b/**/foo.js
方案二
# 先标记忽略a/b整个目录 a/b/ # 取消忽略a/b下所有子目录(让Git可以进入这些目录扫描) !a/b/**/ # 取消忽略所有foo.js文件 !a/b/**/foo.js
额外注意
如果这些foo.js文件之前从未被Git追踪过,配置完直接执行git add .即可生效。如果之前它们被Git缓存过(比如不小心提交过),需要先清除缓存:
git rm --cached a/b/**/foo.js
之后再重新添加到仓库。
内容的提问来源于stack exchange,提问作者gaitat
相关产品推荐
相关产品推荐

