Gitignore 生成器
从 200+ 个 github/gitignore 官方模板挑选语言、框架、IDE 与操作系统,自动去重合并并下载或复制 .gitignore 文件。在浏览器中处理。
- 在浏览器中处理
- 数据不离开你的设备
- 免费 · 无需注册
用微信扫描以下二维码即可分享
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。
什么是 .gitignore 文件?
.gitignore 列出 Git 在 stage 时应忽略的路径模式——通常是构建产物、操作系统元数据、IDE 缓存、依赖目录与密钥文件。模式遵循 gitignore glob 语法(*.log、build/、!keep-this.log),按目录生效。每个 Git 仓库都应该提交一份,以保证 clone 可复现,避免泄漏环境噪声。
常见 Stack 组合
- 全栈 JavaScript:Node + Nextjs + macOS + JetBrains
- Python 数据项目:Python + macOS + VisualStudioCode
- 移动端原生:Android + Java + Gradle + JetBrains + macOS
- 静态站点:Node + Jekyll + macOS + VisualStudioCode
- Go 服务:Go + macOS + VisualStudioCode + JetBrains
合并逻辑
选中的模板按字母排序拼接。每段会输出 ### Name.gitignore 头部,方便追溯规则来源。跨模板重复的规则行在首次出现后被丢弃,注释与空行原样保留。自定义规则在最后以 ### Custom additions 段呈现。生成结果开头带一行指向 ZeroTool 与 github/gitignore 源的 attribution——不喜欢可以直接删掉。
为什么用预打包模板
请求时去抓 github/gitignore 会带来网络延迟与速率限制风险。我们在构建期一次性快照仓库、去重 ID、打成单个 TypeScript 模块——可预测、可审计、零运行时依赖。刷新时手动跑同步脚本,从上游拉新快照后一次 commit 即可。
示例:Node + macOS + JetBrains + VS Code
勾选 JetBrains、macOS、Node、VisualStudioCode,再在自定义规则里加三行:node_modules/、.env.local、coverage-html/。输出共 313 行:开头是来源说明,接着按字母顺序排列 4 个模板(### JetBrains.gitignore 在最前),最后的 ### Custom additions 只剩 .env.local 和 coverage-html/。自定义的 node_modules/ 被去掉了,因为 Node 模板里已有完全相同的一行。
.env.local 保留了下来,尽管 Node 模板的 .env.* 已经能匹配它。去重比较的是每行去掉首尾空白后的文本,不比较规则匹配的范围。
语法陷阱(用 Git 实测)
对下面这个 .gitignore,git check-ignore -v(Git 2.56)的结果是:
logs/
!logs/keep.log
docs/*.pdf
build/
/secret.txt
logs/keep.log仍被logs/忽略。Git 不会进入已排除的目录,所以否定规则不生效(见 gitignore 文档)。需要例外时把logs/改成logs/*。docs/*.pdf忽略docs/a.pdf,不忽略docs/notes/old.pdf:中间带斜杠的规则相对.gitignore所在目录,*不跨越/。build/在任意层级都匹配(build/和src/build/),但只匹配目录。/secret.txt只匹配根目录下的文件,src/secret.txt不被忽略。
已经被跟踪的文件
新规则不会让 Git 停止跟踪已跟踪的文件。把它们从索引里移除再提交,文件仍留在磁盘上:
git rm -r --cached node_modules/
git commit -m "Stop tracking node_modules"
这不会从历史提交中删除文件。如果提交过密钥,先更换密钥;改写历史(例如用 git filter-repo)需要强制推送,所有人重新克隆。
限制
- 内置 237 个模板:162 个来自 github/gitignore 根目录(语言与框架),75 个来自
Global/(编辑器、操作系统、工具)。不含community/目录。 - 模板是上次更新内置包时的快照,上游之后合并的改动要等下次更新才会出现。
- 去重只删除整个文件中重复出现的相同行,不会合并等价的写法,比如
node_modules和node_modules/。
FAQ
模板来源是什么?
全部模板来自 github/gitignore 官方仓库(CC0-1.0 协议)。我们打包了仓库根目录(编程语言与框架)以及 Global/ 子目录(IDE、操作系统、编辑器、构建工具)。community/ 子目录因质量参差未收录。
选多个模板时重复规则怎么处理?
按行 normalize 后跨模板去重。首次出现的规则保留,后续重复的静默丢弃。注释行与空行原样保留,便于追溯每段规则来自哪个模板。
可以追加自己的规则吗?
可以。展开模板下方的「追加自定义规则」区,写入项目特有的路径或 glob,会作为 ### Custom additions 段拼到最后,并参与同一轮去重。
和 gitignore.io 有什么区别?
上游数据相同(github/gitignore)。差异在:四语言本地化界面(English / 中文 / 日本語 / 한국어)、带来源注释的实时预览、在浏览器中执行(数据不离开本地)、模板预打包后离线可用。
模板多久更新一次?
通过手动跑同步脚本从上游拉新快照并 commit。上游一个月几次小改,按节奏定期刷新即可。gitignore 语法稳定,老模板很少破坏兼容。