Git开发操作中应先执行merge还是push?两种流程方案选型咨询
Git分支开发场景流程最佳实践结论
方案2是当前团队Git协作的通用最佳实践,方案1存在明显的流程风险,不推荐使用。
方案1的核心问题
- 评审节点完全倒置:先把feature分支代码合并到本地develop、推送到远程develop之后才做代码评审,等于未经过审核的代码直接进入了公共集成分支。一旦评审发现逻辑错误、安全漏洞或者不符合规范的问题,需要额外做回滚操作,很容易搞乱develop分支的提交记录,甚至误影响其他已经拉取了最新develop代码的协作者。
- 冲突解决过程无溯源:所有冲突解决操作都在本地develop分支完成,没有在远程留痕,其他协作者看不到你解决冲突时做了哪些调整,后续出问题很难定位原因。
- 无远程代码备份:feature分支的所有代码只存在本地,一旦本地设备出现故障,开发的内容有直接丢失的风险。
方案2的合理性说明
方案2的核心逻辑是评审在前、合入在后,能完全规避方案1的上述问题,团队落地时的标准完整流程如下:
- 基于最新的远程develop分支拉取本地功能分支:
git checkout -b feature/xxx(建议给feature分支加明确的功能/需求标识,不要直接叫feature) - 完成本地开发后提交改动:
git add .、git commit -m "feat: 对应功能的清晰说明"(不要用无意义的"done"作为提交信息) - 将本地feature分支推送到远程仓库做备份:
git push origin feature/xxx - 基于远程feature分支发起合入develop的合并请求(MR/PR),同步组织代码评审
- 评审阶段如果develop分支有新的提交导致代码冲突,直接切到本地feature分支,拉取最新的develop代码解决冲突,解决后再推送到远程feature分支即可,所有冲突调整的内容都会在合并请求里完整留痕,评审人可以看到全量改动
- 评审通过后,再执行合并操作把feature分支合入develop,推荐合并时加
--no-ff参数保留完整的合并轨迹,合入完成后可以按需删除已经完成使命的feature分支
注意:所有公共分支(包括develop、主分支)的合入都必须留评审记录,禁止直接在本地合并后推送到远程公共分支,避免脏代码污染公共协作环境。
内容的提问来源于stack exchange,提问作者Theory_Theory
相关产品推荐
相关产品推荐

