多团队协作下develop与master无法同步的Git工作流及问题咨询
多团队协作Git工作流建议及冲突问题解决
适合你的分支工作流
核心分支规则
- master:完全对应生产环境,只接受已验证可上线的变更,禁止直接提交,仅通过PR合并。
- develop:对应开发环境,用来整合各团队的功能分支做联调测试,所有待上线的功能都得先合并到这里验证。
- feature分支:每个新功能/修复都从master拉取创建,命名用
feature/功能名或fix/问题名,方便区分。
Feature分支的完整流程
- 从master拉新分支:
git checkout master && git pull && git checkout -b feature/A - 在feature分支上完成开发、提交代码:
git add . && git commit -m "完成Feature A开发" - 提交PR到develop做联调测试:测试期间有bug直接在feature分支修改推送,PR会自动更新。
- 测试通过后,提交PR到master完成上线:因为分支是基于master创建的,只会包含自身变更,不会带入develop的其他内容。
解决Feature分支混入develop提交的问题
你现在的问题是解决PR冲突时把develop合并到了feature分支,导致分支带上了develop的所有提交。可以用以下两种方法修复:
方法1:交互式变基(推荐)
这种方式能保留Feature A的提交,移除多余的develop合并记录:
- 拉取最新的feature分支:
git checkout feature/A && git pull - 用
git log --oneline找到你创建feature分支时,master对应的最后一个提交哈希(就是分支创建前的那个master节点)。 - 执行交互式变基:
git rebase -i <刚才找到的master提交哈希> - 在弹出的编辑界面里,保留所有属于Feature A的提交,删掉那行以
merge开头的develop合并记录,保存退出。 - 如果变基时出现冲突,手动解决后执行
git add .,再跑git rebase --continue,直到变基完成。 - 强制推送到远程分支:
git push -f origin feature/A注意:如果有其他同事在这个分支工作,一定要提前沟通,强制推送会覆盖远程分支内容。
- 现在你的feature分支就只有自身提交了,正常提PR到master即可。
方法2:重新创建Feature分支
如果觉得变基复杂,直接重新拉分支更简单:
- 拉取最新的master:
git checkout master && git pull - 创建新的feature分支:
git checkout -b feature/A-new - 用
git log --oneline feature/A找到所有Feature A的提交哈希,逐个执行:
遇到冲突解决后继续。git cherry-pick <提交哈希> - 推送新分支到远程:
git push origin feature/A-new - 关掉原来的PR,用新分支重新提交PR到develop和master。
后续避免踩坑的技巧
在GitHub上解决PR冲突时,别选“合并develop到feature分支”的选项,应该本地处理:
- 拉取最新的develop:
git checkout develop && git pull - 切回feature分支:
git checkout feature/A - 把feature分支变基到develop:
这样是把你的提交放到develop最新提交的后面,而不是把develop合并到你的分支。git rebase develop - 解决冲突后完成变基,推送分支,PR的冲突就自动解决了。
内容的提问来源于stack exchange,提问作者Minato
相关产品推荐
相关产品推荐

