如何把 hotfix 分支合并到正在开发的功能分支
hotfix 合入功能分支:git checkout 功能分支 && git merge hotfix 分支名(或 rebase)。功能分支拿到修复后继续开发,最终合并回 main 时 hotfix 已是共同祖先,不再冲突。
在功能分支上执行 git merge hotfix分支 即可。场景很常见:线上 bug 修了 hotfix 合进 main,而你正在开发的功能分支也依赖这块代码——把 hotfix 合过来,功能分支立刻获得修复。
操作流程
git fetch origin
git checkout feature-x
git merge origin/hotfix-login-fix # 或本地 hotfix 分支
# 有冲突解决后提交
git push
之后 feature-x 合回 main 时,hotfix 部分已是共同历史,不会再起冲突。
merge 还是 rebase
git merge hotfix-x:保留合并痕迹,功能分支历史多一个合并点——多人协作的功能分支用这个;git rebase hotfix-x:把你的提交重放到 hotfix 之后,历史线性——个人分支可选,已推送则需强推。
另一种思路:cherry-pick
只想要 hotfix 的那个提交而不想引入合并关系:
git cherry-pick <hotfix提交哈希>
注意 hotfix 之后合入 main 时,你功能分支里的这个 cherry-pick 副本可能与它"重复相遇"——内容相同通常自动解决,但可能报空提交提示。
常见问题(FAQ)
Q:功能分支多久同步一次 hotfix/main 合适?
hotfix 与你改动区域相关就立刻合;否则定期(比如每天开工)从 main 同步一次,避免攒出巨型冲突。
Q:合并后测试挂了怎么办?
hotfix 与你的功能可能有语义冲突(代码不冲突但逻辑冲突)。这也是要及时合并的原因——越早发现越好修。
Q:hotfix 还没合进 main,能先合进功能分支吗?
能,操作相同。但注意如果 hotfix 后来被改写(rebase/amend),你的功能分支会带着旧版提交,合并时可能出现重复。