如何忽略文件夹?folder/ 和 /folder/ 有什么区别?

根目录 .gitignore 中,/logs/ 仅匹配其旁边的 logs 目录,logs/ 则匹配其下任意层级的同名目录。先确定需要的范围,再添加规则。

1. 仅忽略项目根目录下的目录

在根目录 .gitignore 中添加下面的规则。它会忽略 logs/app.log 及根目录 logs 下的其他内容,而 packages/api/logs/app.log 仍可纳入跟踪。开头的 / 以这份 .gitignore 所在目录为基准。

/logs/

2. 忽略任意层级的同名目录

如需忽略所有名为 logs 的目录,改用下面的规则。末尾 / 表示只匹配目录;没有末尾斜杠的 logs 也能匹配同名文件。

子目录中的 .gitignore 以自身位置为基准,其中的 /logs/ 指它旁边的 logs,并非仓库根目录。packages/api/logs/ 这类包含中间斜杠的路径同样相对于 .gitignore 所在目录。

logs/

如何按扩展名忽略文件?* 和 ** 怎么用?

3. 验证匹配范围

创建上述两个未跟踪文件后,在仓库根目录运行命令,比较来源文件和匹配规则:

git check-ignore -v -- logs/app.log packages/api/logs/app.log

使用 /logs/ 时,应只有根目录路径匹配;使用 logs/ 时,两者都应匹配。其他规则可能改变结果。已跟踪文件需单独处理;如果要在被忽略目录中保留例外文件,请参考例外规则文章。

如何忽略已经被 Git 跟踪的文件?

准确行为与更多细节请参阅官方说明: Git 官方文档 · git check-ignore 官方文档