2016-11-22 164 views
0

我有以下情況: 在上游(原始)服務器上,我有一個模板文件,顯示該程序的基本配置。 此文件必須保留在那裏。在git中更改跟蹤文件並允許分支更改

我分叉的項目,並希望改變模板文件,我的遙控器上我有兩個分支:師傅,devel的。我希望在兩個文件上都更改文件,但不要提交它,因爲我將來會發送合併請求,並且必須保留基本配置。

目前我試過3兩件事:

  1. 改變分支機構,並承諾(低技術解決方案)時,請注意文件不變。
  2. 使用:git update-index --assume-unchanged。這聽起來像對我來說是最好的解決方案,這個問題是我不能在不提交的情況下更改master和devel之間的分支(Git不允許它)。
  3. 解開它。正如我所說這不是真正的解決方案,因爲它必須留在回購。

任何建議,可以幫助我/最佳做法?

+0

你怎麼可以改變分支的文件,而無需提交更改?沒有意義。或者你的意思是你有兩個*結賬*一個已經檢查出主人和一個發展?無論如何,答案是有一個本地覆蓋配置文件沒有提交。 – Schwern

+0

@Schwern thx的答案,所以你建議選擇方法#3,這是一個問題,因爲我想缺省模板出現在回購 –

回答

0

這是一個常見的問題。你有一些配置文件或者模板必須在repo中保持一定的方式,但是你希望能夠在你的checkout中本地修改它以進行測試或部署等等。

最簡單的解決方案是有兩個文件。一個是存儲庫附帶的標準配置/模板。這是簽入。另一個是覆蓋文件。這會覆蓋標準配置中的任何文件。這不會被檢入,或者被檢入並留空,並被添加到.gitignore

例如,這裏有一個登錄的master.config文件和一個不是的local.config文件。

master.config 
    some: thing 
    database: 
     type: mysql 
     host: localhost 
     user: test 
     pass: test 

local.config 
    database: 
     host: production.db 
     user: production_user 
     pass: s3kr3t 

生成的配置將是兩者的合併。

some: thing 
    database: 
     type: mysql 
     host: production.db 
     user: production_user 
     pass: s3kr3t 

您將不得不編寫代碼進行合併。