本地git merge+push与Atlassian pull request是否实质等效?
可行,完全能覆盖你要的两个核心诉求,且比当前流程更可控
首先明确两个核心问题的对应答案:
- 合并效果一致性:只要你在Atlassian Bitbucket的PR合并设置中选择
Merge commit策略,远程PR合并生成的提交、最终代码树状态,和你本地执行git merge 官方develop分支再git push的结果完全一致,不会出现提交哈希不一致、历史被改写的情况,后续你把这个大分支合回官方develop的时候不会有任何历史冲突。 - 强制审批能力:Bitbucket原生支持分支权限管控和PR合并校验,完全可以做到所有合入你们维护的大分支的变更(包括同步官方develop的更新)必须走完审批才能合并,不需要你手动协调找人审阅。
具体配置和操作流程
- 先给你们维护的大分支加保护规则
进入仓库的分支权限设置页,找到该分支:- 关闭所有用户(包括仓库管理员)的直接推送权限,从根源上禁止不经过PR直接提交代码的操作
- 配置PR合并的强制通过条件:设置最少审批人数(比如要求1-2名核心开发审批通过),可按需附加CI流水线检查通过、无合并冲突等校验规则,不满足条件的PR根本点不了合并按钮
- 同步官方develop更新的操作直接在远程完成
不需要本地拉代码合并,直接在Bitbucket上发起源分支为官方develop、目标分支为你们维护的大分支的PR即可:- 系统会自动计算两个分支的差异,把本次同步带过来的所有变更、潜在冲突点直接展示在PR页面
- 团队成员直接在PR里逐行审阅代码、评论问题,所有审批满足要求后,点合并就完成了同步,和本地merge+push的结果完全一样
额外收益
这套流程比你当前的本地merge再手动找人审的模式省很多协调成本:
- 所有同步操作留痕:谁发起的同步、谁参与了审阅、审阅时提了哪些修改意见、合并时间点全在PR历史里,后续排查问题不用翻零散的本地提交记录
- 不会出现漏审的情况:权限规则卡死后,没有任何变更能绕开审批直接进分支
- 冲突提前暴露:PR创建后就会自动检测合并冲突,不用等开发者本地merge的时候才发现冲突卡壳
避坑提醒:不要把PR合并策略改成Squash合并或者Rebase快进合并,就保留
Merge commit选项,否则会改写提交历史,和你本地merge的结果不一致,还会影响后续这个大分支往官方develop的最终合并。
内容的提问来源于stack exchange,提问作者Li JY
相关产品推荐
相关产品推荐

