.gitignore 速查表 - 忽略规则与写法大全

误把 node_modules 或 .env 提交进仓库,是几乎所有项目都会踩一次的坑。这份 .gitignore 参考按 5 组整理基础匹配语法、通配与注释、目录与文件、全局忽略与生效命令,以及常见语言模板。不确定某条规则是否命中时,用 git check-ignore -v 验证;已追踪的文件要先 git rm --cached 才停止追踪。读完后你能写出既安全又不会漏文件的忽略规则。

版本控制·共 24 条命令·最后更新 2026-08-02
gitignoregit忽略vcs

基本语法 Syntax 6

*.log
忽略所有 .log 文件
build/
忽略 build 目录及其内容
/dist
仅忽略根目录下的 dist(不含子目录)
**/node_modules
忽略任意层级的 node_modules
doc/*.txt
忽略 doc 下一级的 .txt(不含子目录)
!keep.txt
否定规则:不忽略 keep.txt

通配与注释 Patterns 6

?
匹配单个任意字符
[abc]
匹配方括号内任一字符
**
匹配任意层级目录
# note
注释行
\#file
转义井号以匹配字面 #
\!imp
转义感叹号以匹配字面 !

目录与文件 Dirs & Files 4

.cache
忽略名为 .cache 的文件或目录
*.tmp
忽略所有临时文件
logs/*.log
忽略 logs 下一级日志
*.swp
忽略编辑器交换文件

全局与生效 Global 4

git config --global core.excludesfile ~/.gitignore_global
设置全局忽略文件
git check-ignore -v file
查看某文件被哪条规则忽略
git rm --cached file
停止追踪但保留本地文件
git add -f file
强制添加被忽略的文件

常见语言模板 FAQ 4

node_modules/
Node 依赖目录
.env
环境变量(含密钥,务必忽略)
__pycache__/
Python 缓存
.DS_Store
macOS 系统文件

命令示例

确认某个文件究竟被哪条规则忽略

git check-ignore -v .env

输出两列分别是命中的规则文件与规则内容,排「我明明加了忽略规则却不生效」的问题时最直接。没有任何输出说明文件未被忽略。

输出

.gitignore:18:.env	.env

文件已被追踪,加进 .gitignore 不生效

git rm --cached .env git commit -m "stop tracking .env"

.gitignore 只影响未追踪的文件。已入库的文件必须先 git rm --cached 移出索引,本地文件与提交历史都保留。密钥文件还需轮换,已泄露的密钥改 ignore 无效。

输出

rm '.env'

只在根目录忽略 dist,子目录里的同名目录保留

/dist

开头的斜杠锚定到仓库根;而 dist/ 或 **/dist 会匹配任意层级。路径锚定这个区别在 monorepo 里很关键,否则会误伤子包。

常见坑与注意事项

  • 把 .env 写进 .gitignore 不能撤回已提交过的密钥,泄露后必须轮换密钥,改 ignore 只防未来。
  • 已追踪的文件加 ignore 规则无效,须 git rm --cached 移出索引。
  • 忽略规则用 / 锚定根目录时,只对根目录生效;去掉斜杠会匹配所有层级,可能误伤 monorepo 子包。
  • 不要用 ignore 代替提交:强制 git add -f 会把本该排除的构建产物和密钥重新拉回版本库。
  • 否定规则 !keep.txt 必须排在被它覆盖的规则之后,顺序反了不会生效。

提示

  • 模式匹配相对 .gitignore 所在目录,根目录用 /dist 锚定。
  • 先写否定规则 !file 时,其父目录必须未被忽略。
  • git check-ignore -v file 可查出哪条规则忽略了某文件。
  • 已追踪的文件需 git rm --cached 后才停止追踪。

常见问题

怎么写 .gitignore?

在项目根目录建 .gitignore,每行写一条匹配规则:目录加尾斜杠(build/),文件直接写名(.env),通配用 *(*.log),否定规则用 ! 恢复被忽略的项。常见依赖与密钥模式(node_modules/、.env)直接加进去就能避免误提交。

怎么在 Git 里忽略 node_modules 和 .env?

在 .gitignore 加两行:node_modules/ 与 .env(含 .env.local 等变体可用 .env* 配合 !.env.example)。已跟踪的文件要先 git rm --cached 再忽略才会生效。

.gitignore 和全局忽略有什么区别?

项目 .gitignore 只对该仓库生效;全局忽略(git config --global core.excludesfile ~/.gitignore_global)对所有仓库生效,适合放编辑器缓存、OS 隐藏文件等通用项。两者语法一致。

怎么检查某条忽略规则是否命中了文件?

用 git check-ignore -v <文件> 查看是哪一行规则命中以及来源文件;无输出说明未被忽略。排错时先确认路径写法与否定规则的先后顺序。

gitignore 的感叹号和斜杠是什么意思?

行尾 / 表示只匹配目录;! 开头是否定规则,把前面被忽略的项重新纳入跟踪(否定规则要写在更宽泛的忽略之后才生效);/ 开头表示只匹配仓库根目录下的路径。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年8月2日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们