如何从其他本地设备获取自有仓库被.gitignore忽略的文件
关于被忽略文件的找回结论
只要你最初存放.env文件的旧开发设备上的项目目录没有被删除、文件未损坏,直接从旧设备的本地项目路径中拷贝.env文件到新设备即可。如果旧设备上的.env已经被删除、存储介质损坏,且这份文件从来没有被推送到过任何远程仓库、也没有其他独立备份,完全无法找回——Git不会跟踪被.gitignore规则命中的文件,远程仓库自始至终都没有存储过这份内容,不可能从GitHub端恢复。
直接提交密钥到仓库的影响
如果你把包含真实密钥的.env文件提交推送到仓库,本地应用确实可以正常读取配置运行,但绝对不要这么做:
- 公开仓库下所有人都能直接拿到你的数据库密码、API密钥、服务凭证等敏感信息,极易造成财产损失、服务被入侵
- 即便是私有仓库,只要存在协作者权限泄露、仓库被盗等情况,敏感信息一样会暴露,全行业通用规范是严禁将真实密钥提交到代码仓库
- 一旦密钥被提交到Git提交历史,后续就算删除文件,历史记录中依然会留存敏感信息,彻底清理的成本极高
这类场景的标准处理方案
你现在既然保留了原有密钥,可以先在新设备上重建本地.env文件让项目正常运行,后续按以下流程管理配置,就不会再出现换设备丢失配置、协作不同步的问题:
- 首先在仓库中新增
.env.example示例配置文件,这份文件只列出项目所有需要配置的环境变量键名,对应值全部留空或填写非敏感的示例占位值,示例内容如下:
# 数据库连接配置 DB_HOST= DB_PORT=3306 DB_USERNAME= DB_PASSWORD= # 对象存储服务配置 OSS_ACCESS_KEY_ID= OSS_ACCESS_KEY_SECRET=
这份示例文件需要正常提交到Git仓库,后续换设备克隆仓库后,只需要复制这份示例文件改名为.env,再填入真实的配置值即可运行项目,不会出现遗漏配置项的问题。
- 真实的
.env文件始终保留在本地开发环境,严格加入.gitignore规则不提交。敏感配置不要和代码存在一起,可以选择以下任意可靠方式做备份同步:- 用个人加密密码库统一存储所有密钥信息,换设备时从密码库复制填入对应配置项即可
- 团队协作场景下,使用内部加密的配置共享服务存储真实配置,仅给授权开发人员开放访问权限
- 个人项目可以把真实
.env文件单独存放到自己的加密私人云盘目录做备份,和代码仓库隔离存储
- 后续新增配置项时,先同步更新
.env.example中的键名并提交到仓库,再在本地.env中填入对应的真实值即可。协作者拉取最新代码后,对照更新后的示例文件补全本地配置就能正常运行。
内容的提问来源于stack exchange,提问作者K. Pham
相关产品推荐
相关产品推荐

