先明确目录与相对位置
所有候选路径都相对于这份 .gitignore 所在目录。build/ 表示目录,build 表示文件。规则中的开头 / 用于根锚定,候选中的开头 / 则不合法。路径空格会保留,不会为了匹配而自动去掉。
路径与忽略规则
测试一份根目录 .gitignore 和候选路径;目录路径请以 / 结尾。
规则和候选字符串仅在此浏览器处理,不读取或修改仓库。
请至少输入一条候选路径。
路径相对于这份 .gitignore 所在目录。使用 / 分隔,目录以 / 结尾。拒绝绝对路径、盘符、反斜杠、空路径段、. 和 ..;保留空格。
单份根目录 .gitignore,模拟未跟踪路径,按大小写敏感的 UTF-8 字节匹配。不读取子规则、全局排除、索引或文件系统。
最多 50 个物理规则行和 200 个非空候选行;每规则 256 字符、每路径 512 字符、最多 32 段。拒绝控制字符,后台运行超过 2 秒终止。
结果已过期或正在计算。
例外规则写对了文件名,却未必能让文件重新出现。Gitignore 测试器会指出真正挡住它的父目录:当整个 build/ 已被排除时,后面的 !build/keep.txt 无法恢复其中的文件。
做 Gitignore 在线测试时,除了应该忽略的路径,也放入一条必须保留的路径。逐行历史记录每个规则前缀的整体结果,帮助你发现顺序改变造成的影响,而不是只看一条通配符能否匹配。
build/ 会把父目录一并排除,因此 !build/keep.txt 无法重新包含子文件。cache/* 只排除目录内的条目,后面的 !cache/keep.txt 则可以生效。Gitignore 测试器把父目录原因和决定行一起显示,避免把每条取反规则都误读为成功恢复。
先忽略、再恢复、再忽略,同一路径可能经历三次变化。展开历史能查看每一物理行加入后的完整判定,包括注释和空行。记录中的决定行可能早于当前步骤;它说明当时由谁决定结果,不表示刚加入的那行一定命中了路径。
所有候选路径都相对于这份 .gitignore 所在目录。build/ 表示目录,build 表示文件。规则中的开头 / 用于根锚定,候选中的开头 / 则不合法。路径空格会保留,不会为了匹配而自动去掉。
若结果显示父目录被排除,先让父目录可访问,或者改用 cache/* 这类只排除内容的规则。展开路径历史,比较前后步骤的决定行。没有匹配的路径也会保留在表中,便于检查应当保留的对照样本。
默认编辑后停顿 350 毫秒执行。关闭自动测试后,点击测试规则或按 Ctrl/Cmd+Enter。编辑会立即使旧结果过期。示例和清空均先预览再应用,撤销同时恢复输入与结果;JSON 保存历史,TSV 适合查看摘要。
使用 ignore 7.0.9 的公开接口处理 *、?、字符范围和 **,按大小写敏感的 UTF-8 字节匹配。因此 ? 代表一个字节,不等于一个完整汉字。不提供花括号展开、正则表达式或其他 shell 语法模式。
注释和空行不改变行号。对于可访问的路径节点,最后一条命中规则决定忽略或恢复;即使两条正向规则内容相同,也显示最后命中的那行。父目录已被排除时,结果会说明继承的是哪条父规则。
JSON 保留原路径、规则文本和所有前缀快照。TSV 汇总目录标记、忽略状态、决定行、规则及屏蔽父目录;类似公式的单元格会添加保护性单引号。即使页面只展示前 50 条,导出仍包含全部候选路径。
父目录被排除后,Git 不会继续访问其中的文件。子文件的例外无法重新打开父目录。先恢复父目录,或者使用 build/* 排除内容,再添加具体例外。Gitignore 测试器会在结果中标出造成屏蔽的父路径。
build 可以匹配任意深度的同名条目;/build 仅相对于这份 .gitignore 所在目录匹配。规则中间包含斜杠也会固定相对位置。把 build 和 src/build 同时放入候选,就能直接比较两种写法。
不会。末尾斜杠把规则限定为目录。候选 logs/ 按目录测试,logs 按普通文件测试。浏览器不读取文件系统,也不会根据其他候选路径推测这个条目的真实类型。
开头 **/ 匹配任意深度;结尾 /** 匹配目录后代;a/**/b 可以匹配 a/b 以及中间有多层目录的路径。单个 * 和 ? 不跨越 /。匹配以 UTF-8 字节为单位,因此一个 ? 不能覆盖一个完整多字节字符。
文件一旦已被 Git 跟踪,新增忽略规则不会自动改变它的跟踪状态。这里没有索引信息,只把候选视作未跟踪路径。请先在真实仓库核对文件是否已被跟踪,再判断测试结果与 git status 的差异。
有值得补充的路径案例?