已合并至master的feature新增迷你功能的Git分支正确处理方式咨询
Git分支处理方案:给已合并的feature1添加迷你功能的正确姿势
嘿,我来帮你理清这个Git分支的问题,结合你的场景给你分析两种方案的优劣和正确操作方式~
先明确下你当前的分支状态:
- master分支:已经合并完成feature1_branch的开发内容
- feature2_branch:从master分支创建,开发已完成但还没合并回master
- 新需求:给已经合并到master的feature1添加一个迷你功能(咱们就叫它feature1.1吧)
方案一:先合并feature2到master,再基于master创建feature1.1分支开发
这是逻辑最清晰、最稳妥的方案,适合feature2已经完成测试、具备合并条件的情况:
- 优势:
- 你的feature1.1是基于最新的master分支开发的,包含了feature2的所有代码,后续合并回master时几乎不会有冲突(只要feature2和feature1.1的代码没有重叠)
- 分支职责明确,feature1.1就是feature1的补充,和feature2完全独立,后续排查提交历史也一目了然
- 注意事项:
- 必须确保feature2已经测试通过、没有问题,如果feature2还在测试阶段就合并到master,相当于把不稳定的代码带入了主分支,可能影响后续所有开发
- 如果feature2和feature1.1的代码有冲突,得先在合并feature2到master时把冲突解决掉,再开始开发feature1.1
方案二:从feature2_branch创建分支开发feature1.1
你担心这种方式不妥是对的——这种做法会把feature1.1和feature2的代码强行绑定在一起,分支逻辑会变得混乱,除非万不得已(比如feature2暂时不能合并到master,但feature1.1需要紧急上线),否则不推荐。如果真的选了这种方式,后续合并要注意:
- 绝对不能直接把这个分支合并到master,因为它包含了feature2的所有代码,而feature2还没准备好合并到主分支
- 正确的操作步骤是:
- 开发完feature1.1后,用rebase命令把feature1.1的提交从feature2分支上剥离出来,放到master分支的基础上:
git rebase --onto master feature2_branch feature1.1_branch - 切换到master分支,把剥离后的feature1.1_branch合并进去
- 等feature2测试完成后,再正常合并feature2_branch到master(如果此时有冲突,解决冲突即可)
- 开发完feature1.1后,用rebase命令把feature1.1的提交从feature2分支上剥离出来,放到master分支的基础上:
- 劣势:
- 操作相对复杂,对Git新手不友好,容易出错
- 分支历史会变得混乱,后期排查问题时很难追溯提交来源
我的推荐
优先选方案一,前提是feature2已经完成测试可以合并。如果feature2还不能合并到master(比如还有bug没修、没走完测试流程),那直接从master分支创建feature1.1_branch开发就好——完全和feature2独立,等feature2没问题了再合并到master,届时如果有冲突再解决就行。
另外给你提个Xcode操作小提示(毕竟你用的是Xcode9):
- 创建分支:点击顶部菜单栏的
Source Control > New Branch,选择基于master分支创建feature1.1_branch - 合并分支:开发完成后切换回master分支,点击
Source Control > Merge...,选择feature1.1_branch完成合并
内容的提问来源于stack exchange,提问作者Tigran Iskandaryan
相关产品推荐
相关产品推荐

