Git忽略.env文件无效

224

我有一个 Laravel 项目,在根目录下有以下四个文件:

 

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

我有一个 .gitignore 文件,将这四个文件依次列在 .gitignore 文件中,像这样:

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

我的Git存储库中不包含.env或.env.example文件,但它包含.env.local和.env.staging文件。我已经尝试了我能想到的一切方法,但它仍然会将这两个文件与Gitlab同步。

有什么想法是什么原因导致这种情况吗?

感谢您的帮助!

8个回答

473

使用 git rm 命令:

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

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

现在你应该能够克隆你的分支,而不会跟踪那些文件。
注意:请记住,这些文件的内容在你的历史记录中,如果它们包含敏感数据,则需要在发布之前从历史记录中完全删除

有什么办法可以删除一个目录? - B N Manish
添加 --cached 的目的是什么? - undefined
应该是git rm .env.local --cached,等等。 - undefined

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文件移动到该文件夹中
  • .gitignore文件中添加vars文件夹
*inside .gitignore*

/node_modules
/vars

-请确保在使用环境变量的主文件中添加dotenv.config()的路径。

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

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


1

通过更新 .gitignore 文件就可以轻松实现:

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

0
如果您认为尽管添加了gitignore文件名,但效果不如预期,请确保首先从git中将其删除。

0

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

如果您绝对确定您的.gitignore规则是正确的:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接