无法在 Laravel 5 中 gitignore codeception.yml 文件?

Cannot gitignore codeception.yml file in Laravel 5?

我正在 Laravel 5 中使用 codeception,我的基础项目目录中有一个 codeception.yml 文件,我想忽略它,因为它的数据库凭据因机器而异。

.git忽略 文件:

/.phpstorm.meta.php
/_ide_helper.php
/vendor
/node_modules
Homestead.yaml
Homestead.json
.env
.env.testing
codeception.yml

我认为应该这样做。但是 git 仍在跟踪文件。我做错了什么?

如果您过去提交过该文件,则需要将其从缓存中删除,请尝试

git rm --cached codeception.yml

即使您将 file/directory 添加到 .gitignore 文件,如果它在过去已经添加到 repo,那么 git 会记住它。

it has database credentials which vary across machines.

如果您不小心提交了敏感数据,您可能需要遵循建议 Github give here

更新

为了防止link rot,这里是上面link关于从存储库中删除安全数据的总结说明。如果你愿意,还有一个更简单的版本,使用 BFG Repo-Cleaner 包。

  1. 在终端 cd 到有问题的 repo 的本地克隆。
  2. 运行 以下(小心!这会覆盖您现有的标签。):

    git filter-branch --force --index-filter \
    'git rm --cached --ignore-unmatch codeception.yml' \
    --prune-empty --tag-name-filter cat -- --all
    
  3. codeception.yml 文件添加到 .gitignore 并提交。
  4. 检查您的存储库状态后 git push origin --force --all
  5. 如果您需要从标签中删除敏感数据,您还需要 运行 git push origin --force --tags
  6. 告诉你的合作者变基,而不是合并。合并将重新引入文件。
  7. 一段时间后,您确信 git filter-branch 没有意外的副作用,您可以强制取消引用本地存储库中的所有对象并进行垃圾收集使用以下命令(使用 Git 1.8.5 或更新版本):

    git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
    

    然后

    git reflog expire --expire=now --all
    

    然后

    git gc --prune=now
    

您可能已经将 codeception.yml 文件添加到 git 索引,然后再将其添加到 .git 忽略。这就是它被 git.

跟踪的原因

您可以使用以下命令将其从 git 索引中删除,这样它就不会再被跟踪了。但请记住,这将从您在推送这些更改后拉取的所有其他位置删除 codeception.yml 文件,本地副本除外。

git rm --cached codeception.yml