通常的git ignore都是自己本地的檔案不再追蹤,並且push之後會刪除遠(yuǎn)端的這個檔案。
我的需求是,本地文件不再追蹤,也不刪除遠(yuǎn)端的文件,否則遠(yuǎn)端倉庫的程式碼就壞了,想想看,db.config文件從倉庫中被刪除是多麼可怕的事實。
光陰似箭催人老,日月如移越少年。
首先本地不追蹤和遠(yuǎn)端倉庫不刪除這兩者不能同時獲得,因為git
在每次提交時都是以快照的形式,而不是說提交了幾個文件,所以說如果本地不追蹤了,那麼提交時一定會預(yù)設(shè)刪掉這個檔案。
解決方案:這種問題很常見,跟node_modules
要不要提交遠(yuǎn)端倉庫等相似,你提到了一句話---“遠(yuǎn)端倉庫的代碼就壞了”,我需要糾正一下,並不是說node_modules
要不要提交遠(yuǎn)端倉庫等相似,你提到了一句話---“遠(yuǎn)端倉庫的代碼就壞了”,我需要糾正一下,并不是說git
上面遠(yuǎn)端倉庫的代碼拿下來都是可以直接run
的,百分之九十都是要改一些東西,配一些環(huán)境才可以work
的,就比如我剛剛說的node_modules
問題,沒人會上傳這么大的文件,只會上傳一個 package.json
上面遠(yuǎn)端倉庫的代碼拿下來都是可以直接run
的,百分之九十都是要改一些東西,配一些環(huán)境才可以work的,就例如我剛剛說的
node_modules
問題,沒人會上傳這麼大的文件,只會上傳一個package.json
文件,本地需要根據(jù)這個設(shè)定檔去設(shè)定本地資訊。
你這個db.config
文件也是一樣的,你遠(yuǎn)端倉庫上可以存一個db.config.default
或者db.config.sample
這樣的文件,這里記錄的是db.config
文件的所有默認(rèn)配置,但是每個人本地開發(fā)環(huán)境需要將db.config.default
或者db.config.sample
復(fù)制一份,重命名為db.config
,然后將配置改為自己需要的,很有可能每個開發(fā)人員的本地配置都不一樣,這時候把db.config
加入.gitignore
,一般來說.default
或者.sample
文件不需要改動提交的,除非是真的是整個專案需要修改才要提交
覺得麻煩或設(shè)定檔多的話,可以寫個腳本,用一些
sed
的指令就可以達(dá)到一鍵修改所有設(shè)定的效果,我一般都是這麼做的,腳本裡面把開debug、調(diào)php.ini裡面掃描php檔案變化的間隔時間等工作做了
你的需求可以做到,但這不是問題。問題在於設(shè)定檔的管理。
我通常是這麼做:不同環(huán)境不同的配置文件,config.xxx。不同的環(huán)境透過環(huán)境變數(shù)或命令列參數(shù)或軟連結(jié)(到同一個名字,例如 config,這個檔案不會放到倉庫裡)來區(qū)分,載入對應(yīng)的設(shè)定檔。