Gitignore 测试仪
粘贴您的 .gitignore 规则和文件路径列表,以准确查看哪些文件被忽略,哪些确切的规则和行,以及哪些否定规则默默地死亡,因为父目录已被忽略。
结果
“为什么我的 .gitignore 否定不起作用?”是最常见的 git 问题之一,诚实的答案几乎总是相同的:尝试在早期规则已排除的目录中重新包含文件的 `!pattern` 永远无法工作,因为 git 不会进入被忽略的目录以重新检查其中的任何内容。该工具重新实现了 git 的实际 .gitignore 匹配算法(而不是近似值),特别是它可以捕获并解释确切的情况,以及 git 支持的所有其他模式规则。
将 .gitignore 规则粘贴到一个框中,将文件路径列表(每行一个,如 `dist/index.js`、`node_modules/foo/bar.js` 或 `.env`)粘贴到另一个框中,该工具将按照 git 的方式精确评估每个路径:跳过注释和空行,除非转义否则将删除尾随空格,前导的 '!' 否定规则,前导的 '/' 将其锚定到根而不是让它在任何位置匹配深度,尾随的“/”将其限制为目录,“*”、“?”、“[abc]”字符类和“**”(跨目录边界匹配)都按照记录的 glob 规则工作。
重要的是,路径是从根目录开始逐个目录检查的,就像 git 自己的忽略引擎的工作方式一样——而不是通过单独测试每个规则的完整路径。这就是正确检测死否定情况的原因:如果在第 3 行忽略 `dist/`,并且稍后的 `!dist/keep.js` 尝试挽救其中的一个文件,则该工具会报告 `dist/keep.js` 仍然被忽略,将第 3 行规则命名为原因,并单独将否定标记为隐藏,而不是默默地假装它有效。
结果表为每个测试路径提供了自己的行,其中包含明确的是/否忽略的判决、决定它的确切规则文本和行号,以及(只要相关)解释隐藏否定或继承的父目录规则的简单语言注释。正是这个细节将令人困惑的 .gitignore 变成了您在提交之前可以真正推理的内容。