You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git Squash and Merge场景下如何提前创建特性分支并同步最新代码

结论

完全可以不等待feature branch 1的PR评审、合并流程走完就提前创建feature branch 2开展开发,只要操作流程规范,完全能拿到全量最新代码,不会出现代码遗漏、冲突堆积的问题。

适配Squash Merge策略的标准操作流程

你们团队采用Squash and Merge作为合并策略,特性分支合入master时会被压缩为单个提交,根据feature branch 2是否依赖feature branch 1的未合入代码,分两种场景处理:

场景1:feature branch 2不依赖feature branch 1的代码

这是最常见的场景,操作非常简单:

  • 切到本地master分支,执行git pull拉取远端最新的master代码,保证本地开发基线是最新状态
  • 基于最新的master直接创建feature branch 2,正常开展开发即可
  • 后续feature branch 1评审通过合入master后,如果你还在开发feature branch 2,只需要切回master拉取最新代码,再切回feature branch 2执行git rebase master,把feature branch 1合入的变更同步到当前分支,出现冲突按提示逐段解决即可。

场景2:feature branch 2依赖feature branch 1尚在评审的未合入代码

这种情况也不需要等评审结束,操作步骤:

  • 切到本地feature branch 1分支,执行git pull拉取该分支评审过程中产生的最新提交(包括评审要求修改的代码调整)
  • 直接基于本地最新的feature branch 1创建feature branch 2,在上面开发依赖feature branch 1能力的业务代码即可
  • 等feature branch 1评审通过、Squash合入master之后,做一次基线迁移即可:
    • 切到master分支执行git pull,拿到feature branch 1被压缩后的合入提交
    • 切回feature branch 2,执行git rebase --onto master <feature-branch-1最后一个本地提交的hash值>,把当前分支的基线从原来的feature branch 1迁移到已经合入对应代码的master上,后续这个分支就和普通基于master开发的特性分支没有区别
    • 如果feature branch 1评审过程中做了代码修改,定期给feature branch 2执行git rebase feature-branch-1,把feature branch 1的最新调整同步过来,避免最后攒下大量冲突难以处理。
实操注意事项
  • 尽量不要叠多层依赖分支,比如在feature branch 2还没合入master的时候又基于它拉feature branch 3、feature branch 4,等最底层分支Squash合入时,各层分支的基线迁移、冲突处理成本会非常高,最多叠一层依赖分支就足够
  • 对已经推到远端的个人开发分支执行rebase后,用git push --force-with-lease推送,不要用普通git push,也不要用无保护的git push --force,避免误覆盖其他人提交到该分支的代码;如果是多人共同开发的特性分支,尽量不要做rebase,换用git merge同步代码更稳妥
  • 每次提交PR之前,先把当前特性分支rebase到最新的master,提前解决完冲突再发起评审,减少评审人查看代码的干扰。

内容的提问来源于stack exchange,提问作者Sushivam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 03:06:42