如何配置.gitignore仅忽略目录及子目录下文件而保留文件夹结构
解决方案
1. 调整.gitignore配置
将你的.gitignore规则修改为如下内容:
# 忽略.data目录下所有层级的.json格式文件 .data/**/*.json # 强制不忽略.data下的所有子目录,保证git会遍历目录内容 !.data/**/
2. 新增占位文件保留空目录
git本身不支持跟踪空目录,如果子目录内只有被忽略的.json文件,目录结构依然无法提交到仓库。你需要在每个需要保留的子目录(如.data/customers、.data/transactions等)下新建一个名为.gitkeep的空文件,作为占位符让git识别目录结构。
3. 刷新git缓存(可选)
如果之前.data目录已经被git纳入忽略缓存,执行如下命令清理缓存后重新提交即可:
git rm -r --cached .data
规则说明
- 之前的配置失效是因为如果git匹配到被忽略的父目录,会默认跳过整个目录的内容扫描,添加
!.data/**/的取反规则后,git会正常遍历所有.data下的子目录,仅忽略符合规则的.json文件 .gitkeep是行业通用的空目录占位约定,没有特殊功能,仅用来让git可以追踪到对应目录的存在。
内容的提问来源于stack exchange,提问作者Will Pearce
相关产品推荐
相关产品推荐

