保留目录中的1个文件,忽略其他文件
.gitignore
# 忽略目录中的所有文件
directory/*
# 只保留这个文件
!directory/file-to-keep.ext
工作原理
这个技巧使用了Git的两个关键概念:
- 通配符匹配 (
directory/*
): 匹配指定目录下的所有文件和子目录 - 否定模式 (
!directory/file-to-keep.ext
): 使用感叹号(!)来排除特定文件,即使它们匹配了之前的忽略规则
实际应用场景
这种模式在以下情况下特别有用:
配置目录: 忽略所有配置文件,但保留配置模板
config/* !config/config.example.json
日志目录: 忽略所有日志文件,但保留.gitkeep文件
logs/* !logs/.gitkeep
构建目录: 忽略所有构建文件,但保留README
dist/* !dist/README.md
注意事项
- 否定模式必须在忽略模式之后
- 如果父目录被忽略,无法通过否定模式重新包含其子文件
- 确保文件路径的准确性,包括文件扩展名