2015-12-02 61 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