Git 忽略. env 文件不工作

我有一个 laravel 项目。在根目录中有这4个文件:

. env.example.env.local. env.stage

我有一个.gitignore 文件,我在.gitignore 文件中列出了这4个文件,一个接一个,像这样

.env
.env.example
.env.local
.env.staging

我的 git 存储库不包含. env 或. env.example,但它确实包含. env.local 和. env.stage。 我已经试过所有我能想到的方法了,但是它还是在 Gitlab 上同步这两个文件。

知道是什么引起的吗?

谢谢你的帮助!

196247 次浏览

使用 走吧:

如果您已经添加了要跟踪的文件,则需要将它们从跟踪中删除:

git rm env.local --cached
git rm env.staging --cached
git commit -m "Stopped tracking env.local, and env.staging"

现在您应该能够克隆您的分支,而不会被跟踪到这些文件。

注意: 请记住,这些文件的内容都在您的历史记录中,如果它们确实包含敏感数据,那么您需要从历史记录中获得 完全移除,然后才能将其发布出去。

只需运行此命令。

git rm .env --cached
git commit -m "Stopped tracking .env File"

在 laravel 中有用于连接数据库的.env 文件,因此必须从缓存中删除.env 文件。

这是因为您的 .env文件已被推到 git。

您应该首先从 git 中删除它,然后推送您的更改。

rm -f .env
git add .
git commit -m "remove .env file from git"
git push

不需要使用 clear cache 命令,在 GUI 中也有更简单的解决方案。

如果你完全确定,你的 .gitignore规则是正确的:

  1. 暂存不被忽略的文件(STAGE ONLY DOn’t COMMIT)
  2. 卸载文件
  3. 文件不应该再以更改的形式出现

最好的解决方案是将 .env文件放在它自己的文件夹中,然后将该文件夹添加到 .gitignore文件中。 例如:

  • 创建一个名为“ vars”的文件夹
  • .env文件移到该文件夹中
  • .gitignore中添加 vars文件夹
*inside .gitignore*


/node_modules
/vars


- 确保在使用 enviroment variables的主文件中添加到 dotenv.config()的路径

dotenv.config({path: "./vars/.env"}

然后您可以像以前一样继续引用您的环境变量

您可以从缓存中删除该文件。

试试下面的命令

git rm .env --cached
git commit -m "Any message"