Git中release分支维护遇阻:master与release不同步怎么解决?
解决master与release分支合并时出现旧提交的问题
问题根源
你遇到的核心问题是master和release的提交历史出现了分叉,导致Git无法识别哪些提交已经合并到release。常见原因包括:
- 之前合并master到release时使用了
squash merge(将多个提交压缩为一个新提交),导致release中的提交哈希与master不一致,Git认为原提交未被合并 - 对已推送到远程的公共分支(master/release)执行过变基操作,修改了提交历史
- 合并冲突处理不当,导致部分提交未被正确同步
正确的同步流程
按照以下步骤操作,能确保master和release分支历史一致,避免旧提交重复出现:
1. 更新本地master到最新状态
git checkout master git pull origin master
2. 创建基于最新master的临时合并分支
这个分支用于在本地提前处理所有冲突,避免PR中出现混乱:
git checkout -b sync-master-to-release master
3. 合并最新的release分支到临时分支
git pull origin release
此时如果有冲突,直接在本地解决,然后提交冲突解决结果:
git add . git commit -m "Resolve conflicts between master and release"
4. 推送临时分支并发起合并请求
git push origin sync-master-to-release
然后在代码平台发起将sync-master-to-release合并到release的PR,注意使用普通merge方式合并,不要用squash或rebase合并。
避免问题的注意事项
- 绝对不要对已推送到远程的公共分支(master、release)执行变基操作,这会彻底打乱团队的提交历史
- 合并master到release时,禁止使用squash merge,必须保留原提交哈希,这样Git才能正确追踪哪些提交已合并
- 如果之前已经用squash合并过导致历史混乱,建议一次性同步所有差异:按照上述流程创建临时分支,合并所有冲突后一次性合并到release,后续严格遵循普通merge规则
内容的提问来源于stack exchange,提问作者Nagri
相关产品推荐
相关产品推荐

