如何配置.gitignore忽略指定文件夹并保留子文件夹特定内容?
可用配置
直接将.gitignore替换为以下规则,即可实现仅保留src/ReplicatedStorage/ProjectileCast路径下所有内容、其余文件全部忽略的效果:
/* !/src /src/* !/src/ReplicatedStorage /src/ReplicatedStorage/* !/src/ReplicatedStorage/ProjectileCast !/src/ReplicatedStorage/ProjectileCast/**
配置完成后如果之前已经执行过git add,运行以下命令清除缓存让规则生效:
git rm -r --cached . git add .
执行后通过git status即可确认待追踪文件是否符合预期。
规则说明
原配置不生效,核心是缺了最后一行放行ProjectileCast内部内容的规则。Git忽略规则的匹配逻辑是:如果某一级父目录被标记为忽略,其子路径的放行规则默认不会生效,必须从上到下逐层放开每一级父目录的权限,直到你需要追踪的目标文件层级。
对应的文件夹结构参考:
另外需要明确Git的机制限制:
.gitignore 只能控制哪些文件被追踪,没有路径映射、文件移动的能力,无法实现「忽略ReplicatedStorage、ProjectileCast文件夹本身,直接把ProjectileCast内的内容归置到src下」的效果。
Git本身不支持追踪空文件夹,只要你要保留ProjectileCast内的文件,就必须保留src/ReplicatedStorage/ProjectileCast/这层目录结构。如果确实需要把ProjectileCast里的内容直接放到src下,手动将对应文件剪切到src目录,再调整ignore规则即可。
内容的提问来源于stack exchange,提问作者Ryan Chang
相关产品推荐
相关产品推荐

