Git Release Flow中如何部署非提交序列的指定任务功能
如何在Release Flow模式下创建不含特定任务的部署标签?
背景与场景
新项目采用Release Flow流程,用main分支(原master/production分支)作为项目最新状态的基准,通过Git标签完成生产发布。
当前场景:
- 开发者A完成中等优先级任务A,先合并到
main分支 - 开发者B完成高优先级任务B,随后也合并到
main分支
现在任务B已通过测试,要部署到生产环境,但任务A还在测试阶段不能部署,需要创建仅包含任务B的部署标签。
第一个场景的解决方案
@Ôrel提出的直接在task B分支的最新提交上打标签的方案完全适配这个场景,操作步骤如下:
- 切换到任务B的开发分支:
git checkout task-B - 用
git log --oneline确认当前提交是任务B的最终完成提交(避免误选中间提交) - 创建带备注的标签并推送到远程仓库(示例标签名
v1.0.1):git tag -a v1.0.1 -m "仅包含任务B的生产部署标签" git push origin v1.0.1
这个标签对应的代码只包含任务B的所有变更,完全不会带上任务A的提交。
后续扩展问题:如何创建包含任务B和C但不含A的部署标签?
如果后续任务C也完成测试准备部署,但任务A仍在测试中,可以通过临时整合分支来实现:
- 从任务B的最终提交(也就是之前打标签的那个提交哈希)创建临时发布分支:
git checkout -b release-B-C <任务B的提交哈希值> - 将任务C的开发分支合并到这个临时分支:
(如果出现冲突,直接在这个临时分支里解决就行,不会影响git merge task-Cmain分支的状态) - 在临时分支的最新提交上创建部署标签:
git tag -a v1.0.2 -m "包含任务B和C的生产部署标签" git push origin v1.0.2 - 等任务A完成测试后,直接把任务A合并到
main分支即可,后续正常基于main打标签发布就行。
内容的提问来源于stack exchange,提问作者Влад Чачиев
相关产品推荐
相关产品推荐

