主分支下存在依赖关系的子分支最优Git分支策略咨询
优化Git分支策略解决依赖分支开发与PR冗余问题
一、在classroom-models的PR未完成时启动classroom-services开发
直接基于classroom-models分支创建classroom-services分支,无需等待前者合并主分支:
- 执行命令切换到models分支并创建services分支:
git checkout classroom-models git checkout -b classroom-services - 开发过程中,如果classroom-models有更新,直接在classroom-services分支同步:
解决可能出现的冲突后继续开发即可。git pull origin classroom-models
二、避免classroom-services的PR包含classroom-models的变更
当classroom-models合并到主分支classroom后,通过变基清理services分支的提交历史,确保PR只包含自身变更:
- 拉取主分支最新代码:
git fetch origin - 在classroom-services分支执行变基,将自身提交移到主分支最新代码之上:
git rebase origin/classroom - 若出现冲突,手动解决冲突后执行
git add .,再继续变基:git rebase --continue - 变基完成后强制推送到远程分支(变基修改了提交历史,需提前和团队沟通):
git push origin classroom-services --force
替代方案(团队不接受变基时)
如果团队偏好保留合并历史,可使用合并后重置的方式:
- 拉取主分支最新代码并合并到services分支:
git merge origin/classroom - 重置到主分支最新提交,保留工作区变更:
git reset --soft origin/classroom - 重新提交services的变更:
git add . git commit -m "提交classroom-services的变更" - 推送到远程分支:
git push origin classroom-services --force
提前评审小技巧
开发过程中可给classroom-services开一个草稿PR,将目标分支设为classroom-models,先完成代码评审;等classroom-models合并主分支后,再修改PR的目标分支为classroom,同时执行上述变基/重置操作,即可快速完成最终PR提交。
内容的提问来源于stack exchange,提问作者Stephen
相关产品推荐
相关产品推荐

