如何使用Git Flow基于部分提交创建小版本发布?
Git Flow 下选取部分提交创建小版本的最佳方案
我采用标准的Git Flow分支模型,在部分场景中需要从develop分支的所有提交里挑选部分内容创建小版本发布。
当前分支结构如下:
develop -------x----x1----x2----x3----x4----x5 release/3.4---/--\ master-----------y(tag 3.4)--------
其中提交x是上一版本发布后合并回develop的记录,目前已新增提交x1、x2、x3、x4、x5,我想要创建仅包含x1和x4的release/3.5版本。
我自己的思路(均不够理想):
- 基于develop分支创建版本,撤销提交x2、x3、x5
- 基于master分支的tag 3.4创建版本,挑选x1和x4提交,但最终只合并到master而非develop
最佳解决方案
最佳方案是基于tag 3.4创建release/3.5分支,通过git cherry-pick精准挑选需要的提交,完全符合Git Flow规范,具体步骤如下:
- 切换到master分支并拉取最新代码:
git checkout master git pull - 基于tag 3.4创建release/3.5分支:
git checkout -b release/3.5 3.4 - 依次挑选x1和x4提交(替换为实际的提交哈希值):
git cherry-pick <x1的提交哈希> git cherry-pick <x4的提交哈希>- 若过程中出现冲突,解决冲突后执行
git cherry-pick --continue即可推进
- 若过程中出现冲突,解决冲突后执行
- 完成release分支的测试与调整后,合并到master并打版本tag:
git checkout master git merge --no-ff release/3.5 git tag -a 3.5 -m "Release version 3.5" - 将release/3.5分支合并回develop,确保develop包含所有已发布的功能:
git checkout develop git merge --no-ff release/3.5 - 清理临时的release分支:
git branch -d release/3.5
方案优势
- 对比“基于develop撤销提交”:不会在develop分支留下撤销记录,避免后续分支管理或合并时出现混乱,保持develop分支的线性与干净
- 对比“仅合并到master”:严格遵循Git Flow规范,确保develop分支同步所有已发布的功能改动,避免后续版本遗漏x1和x4的内容
内容的提问来源于stack exchange,提问作者tuffo19
相关产品推荐
相关产品推荐

