当前位置: 首页 > news >正文

Git 热修复 hotfix 分支怎么合并回 master 和 develop 才规范

在标准的 Git Flow 工作流中,hotfix 分支完成修复后,必须同时合并回 master 和 develop 分支,以确保生产环境即时生效且后续开发版本不丢失修复。

先说结论:hotfix 分支源于 master,修复完成后需先合并回 master 发布版本,再合并回 develop 同步修复,最后删除分支。

  • 适合:生产环境出现紧急 Bug 且需要立即修复的场景
  • 先看:当前 develop 分支是否包含未完成的破坏性变更
  • 建议:合并后打上版本标签并推送到远程仓库

命令速用版

git checkout -b hotfix-1.2.1 master
# 进行修复并提交
git add .
git commit -m "Fix critical bug"
# 合并回 master
git checkout master
git merge `--no-ff` hotfix-1.2.1
git tag -a 1.2.1 -m "Release version 1.2.1"
# 推送 master 及标签
git push origin master `--tags`
# 合并回 develop
git checkout develop
git merge `--no-ff` hotfix-1.2.1
# 推送 develop
git push origin develop
# 删除本地及远程分支
git branch -d hotfix-1.2.1
git push origin `--delete` hotfix-1.2.1

为什么要双向合并

master 分支通常代表生产环境的稳定版本,而 develop 分支是下一个版本的开发主线。hotfix 分支是从 master 切出的,只包含修复内容。如果只合并回 master,生产环境问题解决了,但 develop 分支里没有这个修复,下一次发布时旧 Bug 会重新出现。反之,如果只合并回 develop,修复内容会进入下一个版本,但当前生产环境依然存在问题。因此,双向合并是保持版本一致性的必要操作。

分步处理与远程同步

1. 基于 master 创建热修复分支:确保修复起点是生产环境代码,避免带入 develop 中的未完成功能。操作前建议先执行 git pull origin master 确保本地 master 最新。

2. 完成修复并提交:尽量保持提交原子化,只包含必要的修复代码,不要混入重构或新功能。

3. 合并回 master 并打标签:合并时使用 `--no-ff` 保留分支历史,打标签必须添加消息 -m 防止编辑器挂起,方便回滚和版本追踪。

4. 推送远程仓库:合并完成后必须推送 master 分支及标签 git push origin master `--tags`,触发生产环境部署流程。

5. 合并回 develop:将修复合入开发主线,确保后续开发基于已修复的代码。若有冲突需手动解决(见下文)。

6. 清理分支:删除本地和远程 hotfix 分支,保持仓库整洁。

冲突处理实战

在合并回 develop 时,若 develop 分支在 hotfix 期间有较大变动,可能产生冲突。解决步骤如下:

git checkout develop
git merge `--no-ff` hotfix-1.2.1
# 若出现冲突,git status 查看冲突文件
# 手动编辑文件解决冲突标记 <<<<< , ====== , >>>>>
git add <冲突文件>
git commit -m "Resolve merge conflict from hotfix-1.2.1"
git push origin develop

怎么验证是否生效

1. 查看提交历史:使用 git log `--graph` `--oneline` `--all` 查看提交历史,确认 hotfix 分支的提交同时出现在 master 和 develop 的 lineage 中。

2. 检查标签:执行 git tag -l 检查 master 分支是否有对应的版本标签。

3. 远程验证:在远程仓库页面确认 master 和 develop 分支均已更新,且 hotfix 分支已被删除。

4. 功能验证:在测试环境验证 develop 分支是否包含修复内容,生产环境验证 master 对应版本是否修复 Bug。

常见坑

1. 忘记合并回 develop:这是最容易犯的错误,导致下一个版本发布时修复丢失。

2. 忘记推送远程:本地合并后未 push,导致团队协作失效或 CI/CD 未触发。

3. 标签命令挂起:使用 git tag -a 未加 -m 参数会打开编辑器,导致命令看似卡住。

4. 直接在 master 上修改:严禁直接在 master 分支提交代码,必须通过 hotfix 分支操作。

5. 远程分支残留:合并完成后忘记删除远程 hotfix 分支,导致仓库分支列表杂乱。

参考来源

Vincent Driessen, A successful Git branching model, https://nvie.com/posts/a-successful-git-branching-model/

原文链接:https://www.zjcp.cc/ask/11153.html

http://www.jsqmd.com/news/821452/

相关文章:

  • Temu 批量报活动效率提升 10 倍:凌风工具箱如何终结手动申报痛点
  • DeTikZify:基于深度学习的LaTeX公式与图表逆向解析技术详解
  • Taotoken用量看板如何让我们清晰掌握各模型消耗与团队使用习惯
  • Arm RD-V3-R1 FVP虚拟开发平台核心技术与应用实践
  • NsEmuTools:简化NS模拟器管理的三步解决方案
  • 实战指南:四款开源弱口令审计工具的场景化应用与效能对比
  • 携程任我行卡用不完别浪费!三种回收方法,哪种最适合你? - 可可收
  • 工业 DC-DC 性能深度对比解析|钡特电源 DF1-05D15LS 与 E0515S-1WR3 封装互通
  • 大连全域黄金变现大盘点——六大正规品牌实力解读与区域服务地图 - 奢侈品回收测评
  • Windows热键侦探:3分钟快速找出占用快捷键的程序
  • 智慧养老系统入住老人请假管理模块:规范流程·精准管控,守护老人外出安全
  • 从执行到主导:开发者如何构建技术领导力与高效工程体系
  • extra字段超长截断-码点陷阱
  • TPAMI 投稿微信群成立!
  • 云主机/虚拟机迁移后必看:避开dracut紧急模式,搞定grub2和initramfs引导修复
  • AI系统提示词与模型仓库:提升大模型输出质量的关键
  • BilibiliDown终极指南:免费跨平台B站视频下载器完全教程
  • Node.js 命令行工具开发实战:从日期计算到终端可视化
  • AI开发者必备:开源资源导航站ai-hub的设计哲学与高效使用指南
  • 2026 温州黄金回收哪家靠谱?8 家实体门店全名单 + 实时报价 + 避坑指南 - 润富黄金珠宝行
  • 用74LS161和555芯片搭个复古数字钟:我的课程设计避坑实录(附完整电路图)
  • Kubernetic:提升Kubernetes管理效率的桌面客户端工具
  • 程序员转大模型,这8个必备框架,新手也能快速上手
  • Rust印相不是噱头!3大生产环境踩坑清单(含CUDA纹理绑定失败、sRGB色彩空间溢出、ICC配置漂移),立即规避!
  • 2026权威排行:最值得关注公众号编辑器TOP7 创作效率提升三倍 - 行业产品测评专家
  • 免费开源的Windows桌面分区工具:NoFences终极指南
  • 别再死记硬背冒泡排序了!用SCL在博途里画个流程图,一看就懂
  • 保姆级教程:用TensorRT 8.5和Python实现ArcFace动态Batch推理(附完整代码)
  • 数电期末救星:5分钟搞懂钟控触发器(RS/D/JK/T)的区别与波形图画法
  • 2026口碑最佳山东定制/亲子/纯玩旅行横评:十款青岛品牌实力单品精准解析 - 十大品牌榜