仅基于Git master分支开发时,如何处理热修复?
单Master分支工作流的热修复处理方案
针对你遇到的问题,这里有三种实用的处理方式,适配不同场景:
1. 基于稳定标签创建热修复分支(推荐长期使用)
- 从最后一个稳定版本标签(如
1.2.3)切出独立的热修复分支:git checkout -b hotfix/fix-xxx 1.2.3 - 在该分支上完成修复、测试,确认没问题后,合并到master分支:
git checkout master git merge --no-ff hotfix/fix-xxx - 给合并后的提交打新的稳定标签(如
1.2.4),触发正式发布:git tag -a 1.2.4 -m "Hotfix: 修复xxx问题" - 后续合并未发布的特性分支时,要确保特性分支同步master的热修复改动(可以用
git rebase master或合并master到特性分支),避免发布特性时丢失修复。
2. 临时回滚未发布特性,快速发布热修复
- 先将热修复提交合并到master,然后用
git revert逐个回滚热修复之前的未发布特性提交:git revert <feat-commit-hash-1> <feat-commit-hash-2> - 部署当前master分支,打新标签
1.2.4完成热修复发布 - 之后需要发布特性时,通过
git revert回滚之前的revert提交,或者从原特性分支重新合并到master - 这种方式适合紧急热修复且未发布特性较少的场景,缺点是会在提交历史中留下回滚记录。
3. 用Cherry-Pick提取修复到临时发布分支
- 从稳定标签
1.2.3创建临时发布分支:git checkout -b release/1.2.4 1.2.3 - 将热修复分支中的修复提交提取到临时分支:
git cherry-pick <hotfix-commit-hash> - 测试通过后给临时分支打标签
1.2.4,直接部署该分支代码 - 最后记得把热修复提交cherry-pick到master分支,确保后续所有特性分支都能继承这个修复
- 这种方式不会改动master的现有提交历史,适合不想中断特性开发进度的场景。
内容的提问来源于stack exchange,提问作者lonix
相关产品推荐
相关产品推荐

