GIT - 在生产中实现功能分支

Posted

技术标签:

【中文标题】GIT - 在生产中实现功能分支【英文标题】:GIT - Implements Feature Branch On Production 【发布时间】:2019-06-08 06:05:21 【问题描述】:

我的“功能”分支有重大变化,这个“功能”分支是从主分支更新的:

git checkout feature
git pull origin master

虽然已经过全面测试,但我还是要稳妥行事。我还是不想合并到master分支。

所以在生产中,我想只在“功能”分支上结帐,所以如果出现阻止用户继续进行的错误,我可以立即结帐到主分支。

请注意,这个主要实现不会影响任何现有的数据库例程。

这很好,对吧? 有什么想法吗?

【问题讨论】:

考虑拥有第二个“开发”环境? @evolutionxbox - 我没明白你在问什么。 您正在谈论将 prod 切换到功能分支,而不合并到 master(这很危险?),为什么不换一个类似 prod 的环境来查看您是否乐意这样做合并? 【参考方案1】:

这样就好了吧?

在生产环境中手动部署永远不会很好。如果您的功能已准备好上线,则应将其合并到 master 并继续发布过程。如果该功能上线后出现意外问题,恢复过程将开始工作。当我说“revert process”时,我不是指“git revert”,以前的工作版本存档在某个地方,可以快速轻松地切换回生产环境。这是底线和最坏的情况。通常,您应该确保该功能在生产之前运行(例如测试和暂存环境)。

回到 GIT 部分。如果您使用 git branch 作为我上面提到的“备份存档”(尽管不建议在生产环境中使用),那么如果您的代码没有冲突结果(例如 db 记录/磁盘文件/等),它就可以工作。

【讨论】:

【参考方案2】:

生产部署

对此没有正确答案,因为它取决于您对生产环境的偏好、限制和要求。根据这个环境的敏感程度(听起来您在谈论一个用户数量很少的不敏感系统),您希望确保您部署的任何新功能都经过良好测试并且不会破坏预期的功能。例如,您可以使用暂存环境、设置持续集成、使用 Blue/Green deployments 或 Canary Releases 等来实现这一点。

也许以下文章将是一个很好的起点:Deploy to Production - 同样,您会在 Stack Overflow 和互联网的其他部分找到许多关于 CI/CD 主题的提示。

Git 分支

一般来说,我建议使用 git 工作流程,例如 Vincent Driessen's branching model,使用 git 标签并确保您的功能分支保持较小,即每个功能或错误修复都有一个分支。这将限制一次将许多更改合并到主分支的不确定性,并帮助您测试代码。

针对你的特殊情况,为什么不在master分支上创建一个git标签,测试后合并到feature分支中呢?然后,您可以创建一个新标签并将其发布到生产环境中。如果部署后遇到任何错误,可以随时回滚部署之前的标签或创建一个bug fix分支来解决问题。

Create a tag in GitHub repository

【讨论】:

我想我只会将我的功能分支合并到主分支。我想我只是有点偏执。谢谢你深思熟虑的回答。我会检查你提供的链接。 @kapitan 当然,非常欢迎您!如果您还有任何问题,请告诉我。干杯

以上是关于GIT - 在生产中实现功能分支的主要内容,如果未能解决你的问题,请参考以下文章

项目Git分支管理规范

git零基础快速入门实战,重点讲解,在实际生产中整合idea对版本分支的管理等

Git 分支 - 分支的新建与合并

前端项目中使用git来做分支和合并分支,管理生产版本

如何仅使用主 git 分支在 Jenkins 中使我的项目自动从开发部署到登台并手动部署到生产

3.2 Git 分支 - 分支的新建与合并