2012-09-06 11 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