.gitignore 生成器 — 覆盖各种语言和 IDE 的模板
把语言、框架、编辑器和操作系统的 .gitignore 模板合并成一个干净的文件。
### Node.js ### # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* lerna-debug.log* .pnpm-debug.log* # Runtime data pids *.pid *.seed *.pid.lock # Coverage coverage *.lcov .nyc_output # Dependencies node_modules/ jspm_packages/ bower_components # Caches .npm .eslintcache .stylelintcache .cache .parcel-cache *.tsbuildinfo .node_repl_history *.tgz # Yarn .yarn/cache .yarn/unplugged .yarn/build-state.yml .yarn/install-state.gz .pnp.* # Environment .env .env.* !.env.example # Build output dist build out ### macOS ### # General .DS_Store .AppleDouble .LSOverride # Custom folder icons (the real file name is "Icon" followed by a carriage return) Icon? # Thumbnails ._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk ### Windows ### # Windows thumbnail cache files Thumbs.db Thumbs.db:encryptable ehthumbs.db ehthumbs_vista.db # Dump file *.stackdump # Folder config file [Dd]esktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Windows Installer files *.cab *.msi *.msix *.msm *.msp # Windows shortcuts *.lnk ### Visual Studio Code ### .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json !.vscode/*.code-snippets # Local History for Visual Studio Code .history/ # Built Visual Studio Code Extensions *.vsix
浏览器下载以点开头的文件时,常会保存为“gitignore.txt”;请在项目根目录中将其重命名为 .gitignore。
完全在你的浏览器中运行。模板已随页面打包,不会获取或发送任何内容。 浏览全部免费工具.
发现问题,或者觉得哪里可以更好?每条消息我们都会阅读,并尽快修复。
这款 .gitignore 生成器会根据你项目中用到的语言、框架、编辑器和操作系统的模板,生成一个 .gitignore 文件。选择 Node.js、Python、Unity、JetBrains、macOS 或其他 60 多个模板中的任意一个,或者从“Next.js 应用”这样的技术栈开始,模板会合并成一个文件,每部分都有标题。多个模板中重复出现的规则只写一次。
模板基于广泛使用的 github/gitignore 合集编写,去掉了冗长的注释块,并随页面一起打包,因此可以离线使用,你项目的任何信息都不会发送出去。去重处理很谨慎,因为 .gitignore 对顺序敏感:一旦某个模板用“!”规则重新包含了某些内容,之后的重复规则会被保留,以免改变实际被忽略的内容。.gitignore 只对未跟踪的文件生效;Git 已在跟踪的文件请参见常见问题。
使用方法
- 点击一个快速开始技术栈,或搜索模板并勾选项目用到的:语言、框架、编辑器和操作系统。
- 点击标签上的 × 移除不需要的模板。
- 在“自定义规则”中添加项目专用规则,例如 uploads/ 目录。
- 复制结果,或下载后以 .gitignore 为名保存到仓库根目录。
- 提交它:git add .gitignore && git commit -m "Add .gitignore"。
常见问题
为什么文件加进 .gitignore 后仍被跟踪?
.gitignore 只能阻止未跟踪的文件被添加。如果 Git 已经在跟踪某个文件,就会继续跟踪。用 git rm --cached path/to/file(文件夹用 git rm -r --cached folder/)把它从索引中移除而不删除磁盘上的文件,然后提交。如果文件中包含密钥,密钥仍然留在历史记录中,应当更换。
.gitignore 文件应该提交吗?
应该。它应当放在仓库中,这样每个克隆项目的人都会忽略相同的构建输出和依赖文件夹。只适用于你自己的规则(例如编辑器文件)可以放在 .git/info/exclude 中(仅对单个仓库生效),或放进用 git config --global core.excludesFile ~/.gitignore_global 设置的全局忽略文件中。
package-lock.json 或 yarn.lock 应该忽略吗?
不应该,应用项目要提交锁文件。它记录了经过测试的确切依赖版本,让每次安装和每次 CI 运行都得到相同的依赖树。poetry.lock、Pipfile.lock、二进制项目的 Cargo.lock、Gemfile.lock 和 composer.lock 也是如此。这里的模板都不会忽略它们。
这些规则是什么意思?
末尾的斜杠(build/)只匹配目录。开头的斜杠(/build)把规则锚定到 .gitignore 所在的目录。* 匹配除斜杠外的任意内容,** 可跨目录匹配(logs/**/*.log),? 匹配单个字符。以 ! 开头的行会重新包含之前被某条规则排除的内容,# 表示注释,但只在行首有效。
为什么我的取反(!)规则不起作用?
如果文件的某个上级目录被排除了,Git 就无法重新包含该文件,因为它根本不会进入被忽略的目录查看。不要忽略文件夹本身(logs/),而是忽略其内容(logs/*),再重新包含该文件(!logs/.gitkeep)。顺序也很重要:! 这一行必须写在它要覆盖的规则之后。
能查出文件为什么被忽略吗?
能:git check-ignore -v path/to/file 会输出匹配到的 .gitignore 文件、行号和规则。git status --ignored 会列出工作区中所有被忽略的文件。
.gitignore 中应该放什么
• 包管理器会重新安装的依赖:node_modules/、vendor/、.venv/、Pods/。
• 构建输出和缓存:dist/、build/、target/、.next/、__pycache__/、*.class、覆盖率报告。
• 本地密钥和环境文件:.env、*.pem、凭据 JSON。改为提交一个带占位值的 .env.example。
• 编辑器和操作系统产生的杂项:.DS_Store、Thumbs.db、.idea/、.vscode/ 中的大部分内容。
• 日志、崩溃转储和本地数据库:*.log、*.sqlite(除非数据库是特意提交的测试夹具)。
应保留在仓库中的:源代码、锁文件、每个开发者都需要的配置,以及共享的编辑器设置,例如 .vscode/extensions.json——VS Code 模板特意重新包含了它。
Git 从哪里读取忽略规则
Git 会合并多个来源,优先级从高到低依次为:命令行中给出的规则;与路径同目录的 .gitignore 文件,然后逐级向上直到仓库根目录的各个 .gitignore(子目录中的 .gitignore 只对其下方生效);.git/info/exclude,它只在本地生效,永远不会被提交;以及 core.excludesFile 指定的全局文件,默认为 ~/.config/git/ignore。如果你希望项目的 .gitignore 只包含与项目相关的规则,可以把操作系统和编辑器规则放进全局文件。
相关免费工具
- Chmod 计算器 — 勾选读、写、执行复选框,得到八进制权限值和 chmod 命令,或解读 755、644 和 rwxr-xr-x。
- Docker Run ⇄ Compose — 把 docker run 命令转换成 docker-compose.yml 服务,或把 Compose 服务转回 docker run 命令。
- 正则表达式测试 — 用示例文本测试正则表达式,实时高亮匹配结果,显示捕获组并预览替换效果。免费,在浏览器中运行。
- JSON 格式化 — 格式化、压缩和校验 JSON,解析错误精确到行和列。在浏览器中运行,无需上传。