DevToolPal
简

.gitignore 生成器

按语言、框架、编辑器和操作系统组合模板,一键生成 .gitignore 文件。

本地处理,不上传

选项

模板 · 已选 4 个
语言
框架
构建与基础设施
游戏引擎
编辑器与 IDE
操作系统
其他

.gitignore

0 字符 · 0 B

这个工具做什么

.gitignore 生成器把现成的模板组合成仓库用的 .gitignore 文件。选出项目涉及的语言、框架、构建工具、游戏引擎、编辑器和操作系统,工具会把它们的规则合并成一个文件,每个部分前面有 ### 名称 ### 标题,可以直接复制或下载。

内置大约六十个来自 github/gitignore 的模板:Node.js、Python、Java、Go、Rust、.NET、Swift,Laravel、Symfony 等 PHP 框架,Next.js、Flutter、Android、Terraform、Unity、Unreal Engine、Godot,VS Code、JetBrains 系列 IDE、Vim、Emacs,以及 macOS、Windows、Linux 等。全部在浏览器里完成,不会发出任何请求。

使用方法

  1. 在列表里点击模板即可加入。用搜索框能快速找到,它也认常见别名,比如输入“typescript”会找到 Node.js,“intellij”会找到 JetBrains。
  2. 已选的模板按点选顺序显示在顶部,生成的文件也按这个顺序排列。点一下标签可以移除,点清空重新开始。
  3. 项目特有的条目写在自定义规则里,用逗号分隔,比如 .env, /dist, *.local,会追加到文件末尾的 ### Custom ### 部分。
  4. 选择是否保留模板里的说明注释,以及是否去掉前面模板已经写过的规则。
  5. 复制结果或下载。下载的文件名是 .gitignore,放到仓库根目录即可。

选择会保存在页面地址里,收藏或分享链接就能得到同样的文件。

示例

选择 Node.js、macOS 和 VS Code,自定义规则填 .env.local,关闭注释,得到的文件大致如下(有删节):

### Node.js ###
logs
*.log
npm-debug.log*
…
node_modules/
…

### macOS ###
.DS_Store
.AppleDouble
.LSOverride
…

### VS Code ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
!*.code-workspace
*.vsix

### Custom ###
.env.local

以 ! 开头的规则会把前面排除的内容重新包含进来:这里共享的 VS Code 设置、任务和调试配置留在仓库里,个人的编辑器状态则被忽略。如果再把 .env 加进自定义规则,结果不会变化,因为 Node.js 模板里已经有这一条。

小贴士

  • 个人工具相关的规则(编辑器交换文件、系统元数据)放进全局忽略文件,所有仓库都能受益,不必每个项目都写一遍。
  • 结尾带斜杠的 build/ 只匹配目录;开头带斜杠的 /build 只匹配仓库根目录下的那一个。
  • 用 git check-ignore -v <路径> 可以查看某个路径被哪个文件的哪一行规则忽略。
  • 已经提交过的密钥不能靠 .gitignore 保护:应当立即更换密钥并清理历史记录。

常见问题

› 模板来自哪里?

来自 GitHub 官方的 github/gitignore 模板库,该库以 CC0 公有领域协议发布。模板随页面一起打包,使用时不会去网络下载任何内容。

› 为什么加进 .gitignore 之后文件还在被跟踪?

.gitignore 只对未跟踪的文件生效。文件如果以前已经提交过,需要用 git rm --cached <文件>(文件夹加 -r)把它移出索引再提交;文件仍留在磁盘上,之后就会被忽略。

› 「去掉重复规则」是做什么的?

很多模板有相同的规则:Java 和 Kotlin 都忽略 *.class,C 和 C++ 都忽略 *.o。打开这个选项后,同一条规则只在第一次出现时写入,规则全部被去掉的注释标题也会一起删掉。关掉它就会得到和官方发布完全一致的每个模板。

› .gitignore 文件要提交吗?

要。提交后的 .gitignore 对所有克隆仓库的人生效。只和你自己电脑有关的规则(比如编辑器、操作系统)也可以放进全局忽略文件(git config --global core.excludesFile ~/.gitignore_global)。