如何将旧分支prod-2022-08的热修复同步到最新main分支?
将生产热修复同步到开发分支的Git操作步骤
前提确认
确保你本地已经拉取了最新的远程分支代码,避免同步时出现冲突或遗漏。
操作步骤
更新本地分支
- 切换到生产热修复分支并拉取最新代码:
git checkout prod-2022-08 git pull origin prod-2022-08 - 切换回开发分支并拉取最新代码:
git checkout main git pull origin main
- 切换到生产热修复分支并拉取最新代码:
定位热修复提交
在prod-2022-08分支下,用精简日志查看所有提交,找到你做热修复的那一条(通常是最近的提交,备注会和热修复相关):git log --oneline记下这条提交的哈希值(比如
a1b2c3d,日志里最前面的一串字符)。如果是多个连续的热修复提交,记下起始和结束的哈希值。将热修复提交同步到main分支
保持在main分支下,使用cherry-pick把指定的热修复提交合并过来:- 单个提交:
git cherry-pick a1b2c3d - 多个连续提交(包含起始提交的话,在起始哈希后加
^):git cherry-pick a1b2c3d^..f4g5h6i
- 单个提交:
处理冲突(如果有)
执行cherry-pick后如果提示冲突,打开冲突文件解决代码冲突,然后执行:git add . git cherry-pick --continue如果中途想放弃同步操作,执行:
git cherry-pick --abort验证并推送变更
用git log或git diff确认热修复提交已经同步到main分支,然后推送到远程:git push origin main
补充说明
- 为什么用
cherry-pick而不是直接merge?因为prod-2022-08是旧分支,直接合并会把该分支所有旧代码都带到main里,而cherry-pick只会同步你指定的热修复提交,避免引入不必要的历史代码。 - 如果热修复后续还要在生产分支迭代,记得后续的修复也要重复上述步骤同步到
main。
内容的提问来源于stack exchange,提问作者Ali Shahzad
相关产品推荐
相关产品推荐

