You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.gitignore中x、**/x、/**/x的语义与性能是否等价?

.gitignore三类匹配规则差异说明

1. x与**/x的等价性判断

1.1 语义逻辑维度

二者完全等价。
Git的glob匹配规则中,只要规则没有包含路径分隔符/,就会默认递归匹配仓库所有层级目录下的同名文件/目录,效果和主动加**/前缀完全一致。二者都会匹配仓库任意位置的名为x的文件或目录,没有匹配结果的差异。

1.2 匹配性能维度

二者不等价,x的匹配性能明显更好。

  • x是无通配符的简单字符串规则,Git做了专门的匹配优化,不需要解析路径层级就能快速判断
  • **/x包含跨层级通配符**,Git需要遍历所有待检查路径的层级结构做通配匹配,仓库文件越多、目录层级越深,性能差距越明显

2. /**/x与前两者的核心差异

/**/x规则开头的/是根目录锚定标记,会把匹配范围锚定到.gitignore文件所在的仓库根目录,因此匹配逻辑和前两者有本质区别:

  • 仅匹配仓库根目录下至少一级子目录中的x,不会匹配根目录下直接存在的x
  • 其他层级子目录中的x匹配结果和前两者一致
    可以参考下面的目录结构匹配示例:
仓库根目录
├── x          # 被`x`、`**/x`匹配,不被`/**/x`匹配
├── dir1
│   ├── x      # 三个规则都可匹配
│   └── dir2
│       └── x  # 三个规则都可匹配
└── dir3
    └── x      # 三个规则都可匹配

性能上/**/x因为锚定了根目录,匹配效率略高于无锚定的**/x,但仍然远低于简单规则x。


内容的提问来源于stack exchange,提问作者HappyFace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:54:00