2016-02-05 78 views
1

在我正在开发的程序中,我正在使用版本控制。但是,我有一个开发模式和一个实时模式,由程序中的变量进行更改。使用GIT来管理开发环境

是否有可能从基本开发分支中分支持有该变量更改,但是当我修改程序以将新提交推送给主服务器而不推送那些将其切换到开发模式的原始更改时?

Master --------Master with Changes, but not Dev Base Variable change 
|-Dev Base ^
    |-Changes----| 

回答

2

不要在git控制下保持与环境相关的配置。

在一个简单的情况下,它可以是一个变量,但通常它是一组参数,如数据库名称/用户/密码,外部API凭证等。 You don'tstoreyourpasswords and credentials as the plain text in the repository,right?处理这种

两种常用方法有:

1)添加在配置文件中的.gitignore。在存储库中,您可以拥有配置文件示例,因此可以轻松设置新环境(只需复制示例并根据本地环境进行修改)。

2)保持变量参数为环境变量。

+0

这些参数位于服务器端脚本中,我在该脚本上的一个变量之间进行更改,以指定要获取哪组变量。在极少数情况下,我无法将其添加到.gitignore中,我需要编辑该文件。我曾想过将参数添加为环境变量,但是我无法控制服务器,无法更改环境变量。 (这是一个PHP程序) –

+1

@JamesRay你是用Apache还是ngnix运行你的脚本?可以从configs设置环境变量(检查http://stackoverflow.com/questions/2378871/set-application-env-via-virtual-host-config-and-read-this-in-php和http: //stackoverflow.com/questions/8098927/nginx-variables-similar-to-setenv-in-apache)。另外你如何部署新版本?您可以让您的部署脚本生成生产配置。 –

+0

我正在运行Apache,我可能能够使用该链接,并基于服务器URL的变量。我试图避免这个,因为担心网址被改变了。我可能必须这样做,因为它看起来我想用git是不可能的。谢谢。 –

3

你可以有一个单独的“开发”分支,并定期重订或合并在你主的顶部,但可能是大量的工作。

也许维护一个单独的文件不在维护范围内,该文件存在于您的.gitignore中,该文件指定了开发模式等内容。

+0

如果我有一个.gitignore中的文件比我无法对该文件进行任何更改(在极少数情况下可能有此更改)。 –