2016-08-17 97 views
0

有很多這樣的問題,但是沒有一個能夠達到所需的解決方案。.gitignore - 將文件保存在GitHub上

如何忽略對本地文件的更改而未提交給github?例如:app/etc/local.xml

Github - 有正確的local.xml這個不應該被覆蓋! 我有一個本地.gitignore文件,其中包含應用程序/ etc/local.xml 但是,當我更改文件時,它仍然顯示爲已修改爲提交。

我曾嘗試:

git rm --cached app/etc/local.xml 

但這從GitHub刪除文件,但它不那麼讓我繼續在本地編輯文件,它不會出現在提交。

如何將原始文件保存在github上?

這是洽所有文件和文件夾在我的.gitignore

+1

'git update-index --assume-unchanged app/etc/local.xml'。 [條款和條件](https://www.git-scm.com/docs/git-update-index)適用。 – Boldewyn

回答

1

有很多這樣的問題,因爲人們天然化嘗試這樣做(即具有取決於資源庫中的環境配置文件),它從來沒有作品。除了將配置從存儲庫中取出,或者每個環境(不同的文件/目錄名稱)有一個文件以及指向它的外部符號鏈接(或其他機制)之外,沒有好的解決方案。你發現的問題可能有這方面的細節。

你可能會認爲你需要的git忽略它的解決方案,但是這真的是在長期不使用時(即git reset --hard仍然會破壞你的本地修改,或者如果上游文件被改變git merge會失敗,招致手冊始終開銷)。

2

您正在向錯誤的方向上搜索。

有關問題的共同解決方案是創建兩個文件:

  • app/etc/local.xml.dist - 把合理的默認值在所有的設置,並將其添加到Git庫;
  • app/etc/local.xml - 把你實際上是在這個文件在您的計算機上使用的值,其添加到Git庫(如果它已經存在,將其刪除)和它的路徑添加到.gitignore

添加評論到local.xml.dist教你的開發夥伴們,他們應該使文件的副本,將其命名爲local.xml,並把自己的實際配置值在它(而不是修改local.xml.dist用於此目的)。

編寫代碼讀取local.xml.dist然後,如果local.xml存在加載它並覆蓋從local.xml.dist加載的值。這種方式local.xml只能包含真正需要設置的值;如果local.xml.dist已經提供了一個可以在本地計算機上使用的默認值,則可以從local.xml中錯過。

這就是現在很多軟件包的工作原理。