今天我的项目统计如下:
问题:产品负责人请求在“生产”表中添加新字段。因此,团队提出了两种解决方案:
从master创建一个修补程序分支,添加新字段并部署到测试环境。此修补程序可能要等上几个月才能与母版合并,因为在测试通过之后,我们需要等待产品负责人说可以投入生产,因为该字段取决于另一个系统更改。 / p>
从开发创建功能分支,并添加此新字段并部署到测试环境。 我认为这是最糟糕的解决方案,因为我开发中的东西无法合并到母版中,因此我将需要 cherry-pick 来仅拾取需要的更改从发行到掌握。请记住,团队正在验证 SIT环境(发布分支)中的其他功能。
答案 0 :(得分:3)
如果我从developer分支创建功能,那么我将获得不应该在该新功能分支中投入生产的功能。请记住,我还不能将开发项目发送到生产环境
不开心,最大的问题不是合并,而是无法掌握的功能。我如何只发送此更改,而又不发送开发或发行分支中的所有其他功能?
这意味着gitflow不是适合您的工作流程。
切换到 gitworkflow (一个词,illustrated here)。
在rocketraman/gitworkflow
上查看更多内容。
这种工作流程(您不将dev
合并到master
,而是仅将功能分支合并到dev
,然后将其合并到master
,以便能够轻松删除尚未准备好用于下一版本的功能分支)。
(来源:Gitworkflow: A Task-Oriented Primer)
您有:
master
是随时可以部署到生产中的分支:下一个版本,在master
中合并了一组选定的功能分支。dev
(或集成分支,或'next
')是一起测试为下一版本选择的功能分支的maintenance
(或hot-fix
)分支是当前版本演进/错误修复with possible merges back to dev
and or master
注意:在该分布式工作流程中,您可以随时提交并向个人分支推送一些WIP(进行中的工作)而不会出现问题:您将能够重新组织(git rebase)提交,然后再将它们纳入功能分支。