我使用AWS托管,这意味着我无法使用环境变量来控制我的生产和暂存部署。因此,我被迫使用单独的分支进行部署,并且想知道是否有最佳实践方法来维护它们?
如果我将更改合并到我的生产分支中,则包含我的生产设置的提交将在分支历史记录中丢失,从而使调整这些设置变得更加困难。
但是我已经读过你不应该在这种情况下使用rebase,因为它会使回滚更改变得更加困难。
答案 0 :(得分:5)
我在最近的项目中实施git也遇到了很多挑战。经过太多的谷歌搜索,我找到了这个博客,这是一个很好的维护git分支模型的方法。
A successful Git branching model 中央仓库拥有两个主要分支,具有无限的生命周期:
每个Git用户都应熟悉原始分支。与主分支并行存在另一个名为develop的分支。
我们认为origin / master是主要的分支,HEAD的源代码总是反映生产就绪状态。
我们认为origin / develop是主要分支,其中HEAD的源代码始终反映了下一版本中最新交付的开发更改的状态。有些人称之为“整合分支”。这是建立任何自动夜间构建的地方。
支持分支机构
我们可能使用的不同类型的分支是:
功能分支:功能分支(有时称为主题分支)用于为即将发布或将来发布的版本开发新功能。
可能从以下地区分支出来: 开发
必须合并回: 开发
分支命名约定: 除了master,develop,release- 或hotfix -
之外的任何东西发布分支:发布分支支持准备新的生产版本。他们允许最后一刻点缀我和交叉t。
可能从以下地区分支出来: 开发
必须合并回: 发展和掌握
分支命名约定: 释放 - *
修补程序分支:修补程序分支非常类似于发布分支,因为它们也可用于准备新的生产版本,尽管是计划外的。它们源于必须立即采取实际生产版本的不良状态。
可能从以下地区分支出来: 主
必须合并回: 发展和掌握
分支命名约定: 修复程序 - *
您可以从博客中找到有关此Git分支模型的更多详细信息。用于分支模型的命令也列在博客中。 Check the blog了解更多详情。我在我的项目中成功实现了分支模型,并对博客中提到的模型进行了一些更改。 Git是一个强大而灵活的工具,这只是使用Git的一种方式。
答案 1 :(得分:3)
您可以对两个设置文件进行版本控制(一个用于开发,一个用于生产)
然后您可以留下“elasticbeanstalk/hook
”脚本,在“git aws.push
”之后为您编写实际的设置文件。
您可以在“How to get Elastic Beanstalk nginx-backed proxy server to auto-redirect from HTTP to HTTPS?”中看到类似问题的示例,关于Node应用程序(可能不是您的确切情况),其中.ebextensions / config文件将写入/opt/elasticbeanstalk/hooks/configdeploy/enact/myscript.sh
。
最后一个脚本是一个可以在部署时运行的钩子,可以更新环境的实际配置文件。
答案 2 :(得分:3)
在master
上,对两个设置文件(settings_master
和settings_prod
)以及符号链接settings -> settings_master
进行版本控制。现在,将prod
分支master
(如果已存在,则将master
合并到prod
),并在prod
中仅修改符号链接{{1}指向settings
。
将此更改提交至settings_prod
。
现在在prod
上进行所有开发,只要您不修改符号链接本身(更改任一设置文件就可以了),您就可以将master
合并到{在不影响master
目标的情况下,您可以随意使用{1}}。您的应用程序应从prod
检索其配置。
这将导致提交历史记录如下所示:
settings
每次settings
合并到... -o---o---o---o master
\ \ \
... --o-------o---o prod
后,从master
到prod
的差异将始终是:
master
答案 3 :(得分:3)
下面有一些链接可以分享关于方法的一些看法以及为什么要选择rebase或merge的原因。
请参阅: