git 忽略 .env 文件不起作用

问题描述 投票:0回答:9

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

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

我有一个 .gitignore 文件,我在 .gitignore 中依次列出这 4 个文件,就像这样

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

我的 git 存储库不包含 .env 或 .env.example,但它包含 .env.local 和 .env.staging。 我已经尝试了我能想到的一切,但它一直在与 Gitlab 同步这两个文件。

有什么想法可能导致这种情况吗?

感谢您的帮助!

git laravel laravel-5 gitlab
9个回答
473
投票

使用git rm

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

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

现在您应该能够克隆您的分支,而无需跟踪这些文件。

注意:请记住,这些文件的内容都在您的历史记录中,如果它们确实包含敏感数据,那么您需要在将其发布之前从历史记录中完全删除


218
投票

只需运行此命令即可。

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

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


21
投票

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

尝试以下命令

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

11
投票

这是因为你的

.env
文件已经推送到git了。

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

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

4
投票

最好的解决方案是将

.env
文件放在它自己的文件夹中,然后将该文件夹添加到
.gitignore
文件中。 示例:

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

/node_modules
/vars

-确保在使用

dotenv.config()
 的主文件中添加 
enviroment variables

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

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


1
投票

更新 .gitignore 很简单:

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

0
投票

无需使用清除缓存命令,在 GUI 中也可以使用更简单的解决方案。

如果您绝对确定,您的

.gitignore
规则是正确的:

  1. 暂存未被忽略的文件(仅暂存,不提交)
  2. 取消暂存文件
  3. 该文件不应再出现在更改中

0
投票

如果您认为尽管添加了文件名 gitignore 仍无法按预期工作,那么请确保先将其从 git 中删除。


0
投票

对我来说,这是因为该文件已上演。我取消暂存 .env 文件,它被正确忽略。

© www.soinside.com 2019 - 2024. All rights reserved.