2015-12-02 63 views
1

我在Laravel 5中使用了codeception,并且我有一个codeception.yml文件位于我的基础项目目录中,我想忽略它,因为它具有跨机器不同的数据库凭证。Laravel 5中不能gitignore codeception.yml文件?

的.gitignore文件:

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

我想这应该这样做。但git仍在跟踪文件。我究竟做错了什么?

+0

您是否已经将该文件提交给过去? – DavidT

+0

噢,是的,我想我必须以某种方式删除它。 – Rohan

回答

1

如果你犯了文件在过去,你将需要从缓存中删除它尝试

git rm --cached codeception.yml 

即使你添加一个文件/目录到.gitignore文件,如果它已经被添加到回购在过去,git会记住它。

它具有跨机器不同的数据库凭证。

如果您意外提交了敏感数据,您可能需要按照建议Github give here

更新

为了防止腐烂链接这里是从回购删除安全数据从上面的链接汇总说明。如果您愿意,还可以通过使用BFG Repo-Cleaner软件包获得更简单的版本。

  1. 在终端cd到当地克隆的问题。
  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 
    
+1

很高兴它的工作,如果你需要从回购历史记录中删除文件完全按照发布的github链接。稍后我会更新答案,并提供完整的说明以防止链接腐烂。 – DavidT

0

在添加到.gitignore之前,您可能已经将codeception.yml文件添加到git索引。这就是它被git追踪的原因。

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

git rm --cached codeception.yml