如何向Git添加目录结构但不提交对应目录内的文件内容
问题解决:Git保留指定目录结构、忽略目录内所有内容的配置方案
正确配置步骤
1. 调整.gitignore规则
将原来的规则替换为以下内容:
# 允许Git跟踪两个目标根目录 !folder1/ !folder2/ # 忽略两个目录下的所有子文件/子目录 folder1/* folder2/* # 例外规则:保留占位文件,用于让Git识别空目录 !folder1/.gitkeep !folder2/.gitkeep
2. 创建目录占位文件
Git本身不支持跟踪空目录,需要在两个目录下各创建一个约定俗成的空占位文件.gitkeep,执行以下命令即可:
touch folder1/.gitkeep folder2/.gitkeep
3. 提交配置到版本库
# 暂存修改后的配置文件和占位文件 git add .gitignore folder1/.gitkeep folder2/.gitkeep # 提交改动 git commit -m "chore: 保留folder1、folder2目录结构,忽略目录内其他内容"
原配置失效原因
- Gitignore规则的匹配优先级为后置规则覆盖前置规则,你之前先写了不忽略folder1、folder2的规则,后续又添加了忽略目录下所有内容的
folder1/**、folder2/**规则,后者优先级更高直接覆盖了前面的排除规则。- 就算规则配置正确,Git也不会跟踪完全空的目录,必须有至少一个可追踪的文件在目录内,Git才会将目录纳入版本管理。
拓展说明
如果后续需要跟踪两个目录下的指定文件,直接在.gitignore中添加对应例外规则即可,示例:
# 保留folder1下的config.json文件不被忽略 !folder1/config.json
内容的提问来源于stack exchange,提问作者omer
相关产品推荐
相关产品推荐

