Appearance
.geminiignore 文件让你精确控制 Gemini CLI 能"看到"哪些文件:把 .env、本地数据库备份、私有笔记等敏感内容隔离在 AI 视野之外,同时不影响 git 对这些文件的追踪。语法与 .gitignore 完全一致,放在项目根目录即可生效。
.geminiignore:控制 AI 可访问文件
.geminiignore 文件让你决定哪些文件对 Gemini CLI 不可见——AI 无法读取、搜索或引用这些文件,但它们对 Git 和其他工具仍然可访问。
典型使用场景
- 保护敏感信息:
.env文件、API Key、数据库凭据 - 排除私有内容:本地数据库备份、私人笔记、不适合分享的草稿
- 减少干扰:大型二进制文件、生成物、无需 AI 理解的历史文档
如何启用
在项目根目录创建 .geminiignore 文件即可激活:
bash
touch .geminiignore修改 .geminiignore 后需要重启 Gemini CLI 会话才能生效。
文件语法
.geminiignore 使用与 .gitignore 相同的语法规则:
基本规则
| 规则 | 说明 |
|---|---|
# 开头 | 注释,被忽略 |
| 空行 | 被忽略 |
目录名/ | 结尾的 / 只匹配目录,不匹配同名文件 |
/ 开头 | 锚定到 .geminiignore 所在目录(项目根) |
! 开头 | 取反,从已排除列表中移除 |
通配符
| 模式 | 说明 |
|---|---|
* | 匹配任意数量任意字符(不含路径分隔符) |
? | 匹配单个任意字符 |
** | 匹配任意路径层级 |
[abc] | 匹配括号内任一字符 |
示例
排除敏感配置文件
# 排除环境变量文件
.env
.env.local
.env.production
# 排除 API Key 文件
apikeys.txt
credentials.json排除目录
# 排除 /archive/ 目录及所有子目录
/archive/
# 排除 node_modules(通常 .gitignore 已有,但可以显式指定)
node_modules/
# 排除本地数据库备份
/local-db-dumps/使用通配符
# 排除所有 .md 文件
*.md
# 但保留 README.md
*.md
!README.md
# 排除所有 SQL 文件
*.sql组合规则
# 排除私有笔记目录
/private-notes/
# 排除所有 .log 文件,但保留 important.log
*.log
!important.log
# 排除所有 .bak 备份文件
**/*.bak与 .gitignore 的关系
| 特性 | .gitignore | .geminiignore |
|---|---|---|
| Git 可见性 | 文件对 Git 不可见 | 文件对 Git 仍然可见 |
| AI 可见性 | AI 通常也尊重 gitignore | AI 不可见 |
| 语法 | 标准 gitignore | 完全相同 |
| 场景 | 不提交到仓库的文件 | 提交但不想给 AI 看的文件 |
Gemini CLI 默认已经遵守 .gitignore,所以你只需要在 .geminiignore 中额外写那些"git 追踪但不想被 AI 读取"的文件。
下一步
- 了解 AI 如何读取和引用文件:文件管理教程
- 保护敏感路径的同时设置项目级规范:GEMINI.md 参考
常见问题
Q: .geminiignore 文件本身会被 AI 读取吗?
A: .geminiignore 是元配置文件,Gemini CLI 会读取它来建立排除规则,但不会把它的内容注入到 AI 的提示上下文中。AI 不会"看到"你写了哪些排除规则。
Q: 修改 .geminiignore 后多久生效?
A: 需要重启 Gemini CLI 会话才能生效。在当前会话中修改后直接运行 /memory reload 不能刷新 .geminiignore,必须完全退出并重启。
Q: 对已经引用了的文件,中途添加到 .geminiignore 会有效果吗?
A: 需要重启会话才生效。已经在当前会话中被读取的文件内容仍然在 AI 的上下文里,新的排除规则只对之后的新会话生效。