GitHub分支更新疑问:release同步master的操作及异常问题
问题解答
1. 你的分支更新方式存在问题
你解决冲突的步骤是合理的,但最后一步选择squash and merge合并release_to_master到master是错误的。
正确的分支同步流程应该是:
- 在
release_to_master分支合并release并解决冲突后,通过PR选择**Create a merge commit(普通合并)**的方式合并到master; - 或者更直接的方式:拉取最新
master分支,切换到release分支执行git rebase master并解决冲突,推送更新后的release分支后,直接创建PR合并到master(若release是受保护分支,需先临时解除推送限制或用临时分支中转)。
2. 为何master已更新却仍显示提交和变更?
这是squash and merge的特性导致的:
- 当你使用squash合并时,Git会把
release_to_master上的所有提交(包括从release合并过来的提交)压缩成一个全新的独立提交,再将这个新提交追加到master分支上; - 但
release分支的原始提交历史并没有被合并到master的提交链中,Git判断分支是否需要合并是基于提交历史而非文件内容的。所以在Git的视角里,release分支还有大量未被合并到master的提交,即使这些提交的内容已经通过squash生成的新提交同步到了master; - 这就解释了为什么新PR能看到提交和变更,但没有合并冲突——因为文件内容已经一致,但双方的提交历史完全不重合。
内容的提问来源于stack exchange,提问作者Tung Vu Duc
相关产品推荐
相关产品推荐

