1. 在整个项目中忽略某种扩展名
将下面的规则放在根目录 .gitignore 中,可匹配 app.log、logs/app.log 和 src/app.log。* 匹配除 / 以外的零个或多个字符;规则没有斜杠时,Git 会在该 .gitignore 下各层级检查名称。
每条规则单独一行。这里使用 Git 忽略模式,不是 shell 命令或正则表达式;*.{log,tmp} 中的花括号不会表示扩展名列表。
*.log 2. 将规则限制在指定目录
下面第一条方案匹配 logs 直属的 logs/app.log,但不匹配 logs/archive/app.log。第二条方案同时匹配两者:/**/ 允许中间有零层或多层目录。两者都不匹配 src/app.log。
对比时每次只应用一种方案。/logs/ 这样的目录排除规则也会因排除父目录而隐藏深层文件,因此判断通配符之前还要检查其他规则。
/logs/*.log/logs/**/*.log 3. 检查代表性路径
选定一种规则并创建这三个未跟踪文件后,检查匹配结果:
git check-ignore -v -- logs/app.log logs/archive/app.log src/app.log使用 /logs/**/*.log 时,logs 下的两个路径应匹配,src/app.log 不应匹配。详细输出中以 ! 开头的匹配是例外规则。若要保留某个文件,应写明确的例外,并允许遍历各级父目录。
准确行为与更多细节请参阅官方说明: Git 官方文档 · git check-ignore 官方文档