如何忽略 .env,同时保留 .env.example?

对于使用本地 .env 文件的项目,可将真实值留在版本控制之外,提交只含占位值、经过检查的 .env.example。应用宽泛规则之前,先确认框架的配置约定。

1. 忽略本地值并保留示例

把下面的规则放进根目录 .gitignore。它们排除根目录 .env 和以 .env. 开头的文件,再重新纳入 .env.example;不覆盖 service.env 等其他命名或子目录中的文件。

提交前检查 .env.example:示例文件名并不能保证内容可公开。使用占位值,并说明项目需要哪些变量。

/.env
/.env.*
!/.env.example

2. 验证三种情况

准备未跟踪的 .env、.env.local 和 .env.example,检查各自匹配的规则:

git check-ignore -v -- .env .env.local .env.example

!/.env.example 表示重新纳入示例。状态输出应列出示例文件,省略两个本地值文件。被排除的父目录或后续规则仍可能改变结果。

git status --short --untracked-files=all -- .env .env.local .env.example

为什么用 ! 仍无法保留被忽略目录里的文件?

3. 处理此前已跟踪的值文件

检查 Git 是否已经跟踪这些本地值文件:

git ls-files -- .env .env.local

若输出了路径,请按已跟踪文件文章处理,并与协作者协调。添加 .gitignore 不会删除已有提交。如果凭据曾泄露,先撤销或轮换,再参考 GitHub 的敏感数据处理说明;只移除当前文件不会清除历史。

如何忽略已经被 Git 跟踪的文件?

准确行为与更多细节请参阅官方说明: Git 官方文档 · Git 常见问题官方文档 · GitHub 敏感数据处理说明