2010-09-30 116 views
17

我有一個裸倉庫和兩個工作副本 - 一個在我的機器上,另一個在服務器上。
事實證明,我必須.gitignore某個文件,必須爲每臺機器特定。我們稱之爲'settings.py'。這個文件已經提交。如何.gitignore並刪除已提交的文件而不影響其他工作副本?

我確實在'gitignore中放入'settings.py'來忽略它。現在當我改變我的機器git的狀態文件仍然告訴我

modified: settings.py 

我想通了,我不得不刪除settings.py這樣的:

git rm --cached settings.py 

然後git add .,其次是git commit

但是,當我現在推這到裸露的回購,並將其拉到服務器上的工作副本,settings.py被刪除那裏 - 這是不好的,因爲我必須保持此特定settings.py

我想我可以製作settings.py的副本,並在刪除後將其放回原處,但我覺得必須有更好的方法來做到這一點。

回答

8

你可以告訴git完全忽略對被跟蹤文件的修改而不必刪除它們。如果你想跟蹤後文件

git update-index --assume-unchanged [FILENAME] 

然後:

git update-index --no-assume-unchanged [FILENAME] 
使用此命令
7

你能保持相當永久settings.py刪除(本地和遠程),和:

  • 版本setting_remote文件遠程端
  • 版本setting_local文件本地側(即與本地特定設置)
  • 添加一個filter driver能夠在結帳時重建正確的settings.py文件。

alt text

這樣,settings.py保持 「私有」(非版本)。但是每個環境的具體值都是版本控制的,每個環境都設置在自己的文件中,沒有任何合併問題。

相關問題