通常的git ignore都是自己本地的檔案不再追踪,並且push之後會刪除遠端的這個檔案。
我的需求是,本地文件不再追踪,也不刪除遠端的文件,否則遠端倉庫的程式碼就壞了,想想看,db.config文件從倉庫中被刪除是多麼可怕的事實。
世界只因有你2017-05-25 15:10:28
首先本地不追踪和遠端倉庫不刪除這兩者不能同時獲得,因為git
在每次提交時都是以快照的形式,而不是說提交了幾個文件,所以說如果本地不追踪了,那麼提交時一定會預設刪掉這個檔案。
解決方案:這種問題很常見,跟node_modules
要不要提交遠端倉庫等相似,你提到了一句話---“遠端倉庫的代碼就壞了”,我需要糾正一下,並不是說node_modules
要不要提交远端仓库等相似,你提到了一句话---“远端仓库的代码就坏了”,我需要纠正一下,并不是说git
上面远端仓库的代码拿下来都是可以直接run
的,百分之九十都是要改一些东西,配一些环境才可以work
的,就比如我刚刚说的node_modules
问题,没人会上传这么大的文件,只会上传一个 package.json
上面遠端倉庫的代碼拿下來都是可以直接run
的,百分之九十都是要改一些東西,配一些環境才可以work< /code>的,就例如我剛剛說的
node_modules
問題,沒人會上傳這麼大的文件,只會上傳一個package.json
文件,本地需要根據這個設定檔去設定本地資訊。
你這個db.config
文件也是一样的,你远端仓库上可以存一个db.config.default
或者db.config.sample
这样的文件,这里记录的是db.config
文件的所有默认配置,但是每个人本地开发环境需要将db.config.default
或者db.config.sample
复制一份,重命名为db.config
,然后将配置改为自己需要的,很有可能每个开发人员的本地配置都不一样,这时候把db.config
加入.gitignore
,一般来说.default
或者.sample
文件不需要改動提交的,除非是真的是整個專案需要修改才要提交
覺得麻煩或設定檔多的話,可以寫個腳本,用一些
sed
的指令就可以達到一鍵修改所有設定的效果,我一般都是這麼做的,腳本裡面把開debug、調php.ini裡面掃描php檔案變化的間隔時間等工作做了
过去多啦不再A梦2017-05-25 15:10:28
你的需求可以做到,但這不是問題。問題在於設定檔的管理。
我通常是這麼做:不同環境不同的配置文件,config.xxx。不同的環境透過環境變數或命令列參數或軟連結(到同一個名字,例如 config,這個檔案不會放到倉庫裡)來區分,載入對應的設定檔。