2012-09-06 13 views
4

我正在使用Successful Git branch介紹的工作流程。 我對如何管理更改感到困惑,比如開發分支中的配置。如何保持git中的私人更改?

當我從主人合併,保持工作樹幹淨,我藏匿變化。如果我承認這些變化,當我將主人合併時,我應該非常小心。

那麼有沒有更好的方法來管理git中的私人更改?

回答

4

There ar e幾個選項:

  1. 不要將私人文件放在源代碼管理下。例如,如果您需要爲每個開發人員提供私人更改的config.ini,然後在存儲庫中創建一個包含示例設置的文件config.ini.template,那麼每個開發人員都應制作一份副本並使用私人設置修改副本。應在0​​中添加config.ini

  2. 在回購中添加config.ini並使用git update-index --assume-unchanged config.ini以便git將忽略文件中的任何本地更改而不嘗試提交該文件。

  3. 在每個環境的回購中添加幾個配置文件,例如, config-robotment.ini,config-kan.iniconfig-produciton.ini等等。然後使用命令行參數或環境變量或類似的東西來允許應用程序選擇要使用的文件。

而關鍵是 - 不要使用分支進行配置,否則在開發過程中分支/合併將會很痛苦。

+0

感謝您的建議,但我正在開發一個將配置文件添加到git的項目,但我無法更改它。也許我可以在我自己的項目上試試這個。 – robotment

+0

@robotment然後使用選項2,它不會影響存儲庫,只是您的工作副本。 – kan

+0

配置文件已經在repo中,並使用git update-indexc --assume-unchanged config.ini。如果上游更新config.ini,會不會更新本地文件? – robotment

0

創建並切換到具有不同名稱的本地分支,在需要時合併上游主分支。

+0

OP對「合併上游分支」有什麼命令?他們應該在哪個分支等? –

+0

git merge origin/master – linquize

+0

@linquize如果我想提交,我也必須選擇我真正做的事情。 – robotment

1

對於配置文件,選項在「Git: keep specific files unmerged」中恢復。

我更喜歡爲每個環境(此處爲每個分支)版本化不同的值文件,這樣我就不必處理合並(價值文件「dev.config」永遠不會在主分支中修改,其中值文件「master.config」)中使用

我也版本模板​​文件,爲了使內容filter driver產生實際的配置文件(該文件的私密性,而不是版本)的分支的檢出:

smudge clean filter driver