功能分支A怎么先合并到dev,然后测试在 dev 上完成测试验收ok之后,功能分支A怎么再合并到 master?

dev 对应的是线上的测试环境,会有测试人员对上线功能做测试

master 对应的是线上的生产环境

比如新开发了一个关于 youtube 的功能,叫做 feature/support_youtube_crawler 分支

开发完成 feature/support_youtube_crawler 之后,会在 gitlab 弄一个合并请求(merge request)从 feature/support_youtube_crawler merge 到 dev

管理人员完成合并之后,会自动触发 cicd,部署到测试环境之后,测试人员会进行测试,如果测试通过。

则需要把新功能上到 master 中

⚠️,类似 feature/support_youtube_crawler 这样的新功能,同时会存在很多,比如 feature/support_x_crawlerfeature/support_facebook_crawlerfeature/support_ins_crawlerfeature/support_douyin_crawler 等等。所以不能 git checkout master && git merge dev ,因为这样会把很多还未经过测试的 commit 也带到 master

这时候问题来了,怎么把 feature/support_youtube_crawler 优雅的合到 master 呢?

gitlab 上好像没有这个便捷按钮来实现(如果有就最好了,但是没有发现)

如果自己使用 git 来实现,具体用哪个命令呢?

merge?cherry-pick?

我能想到的是 merge,因为可以保留提交记录和合并记录,大家是怎么用的?有更好的方式可以分享吗?


如果选用 merge 的话,也还可以细分好多种路线:

  • 路线一:让 feature/support_youtube_crawler 对应的开发自己再重新提交一个 pr 到 gitlab,由管理人员点击确认
  • 路线二: 让 feature/support_youtube_crawler 对应的开发把 feature/support_youtube_crawler 也 push 到 gitlab。由管理人员 checkout feature/support_youtube_crawler 到本地后,手动 merge 到 master,再删除远程分支

哪个更好呢?

阅读 4.7k
2 个回答
新手上路,请多包涵

说一下我们团队的方案,我们是在功能分支(feature/support_youtube_crawler)、dev、master之外还有个用来测试的分支,方便每次功能迭代的时候发测试用;每个功能分支在开发阶段是合并到测试分支,这个测试分支只用来开发阶段的功能验证。开发周期结束的时候,需要开发人员提PR到dev(如果某个功能不需要发布的,不可以提交PR到dev),代码评审之后,会部署dev分支给测试人员完成测试+业务验收;测试过程中出现的BUG修复还是在各自的功能分支修复之后提PR到dev;dev经过测试和业务验收之后会合并到master;

这个类似于你说的路线一,不过比你说的多了一个测试分支,这个测试分支每次迭代都会从dev拉取一个新的;

希望可以帮到你。

当你需要夸分支合并代码 or 回溯特定功能的时候,可以使用 cherry-pick 命令。

下面是简单的使用方法:

单个提交

git cherry-pick [commit - hash]
git cherry-pick 123456789abcdef

多个提交

git cherry-pick [start-commit-hash]..[end-commit-hash]

另外你可以参考官方文档:https://git-scm.com/docs/git-cherry-pick

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
极客观点
子站问答
访问
宣传栏