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

Git不同feature分支间迁移变更且保持提交历史干净的方案问询

可行解决方案

方案1:临时基于feature-b开发(适配squash合并工作流,无额外等待成本)

操作步骤如下:

  • 先拉取本地feature-b的最新远程代码:
    git checkout feature-b
    git pull origin feature-b
    
  • 切换到feature-a分支,将feature-a的所有提交rebase到feature-b的最新头部:
    git checkout feature-a
    git rebase feature-b
    
    执行完成后你就能直接拿到feature-b的所有现有修改,可直接在这个基础上开发feature-a的依赖逻辑,不需要等待feature-b开发完成。
  • 等后续feature-b开发完成、已经squash合并到master之后,再执行以下操作清理提交历史,保证feature-a的提交完全干净:
    1. 拉取最新的master代码:
      git checkout master
      git pull origin master
      
    2. 用rebase --onto命令把feature-a的专属提交迁移到最新master上,自动丢弃所有从feature-b带过来的冗余提交:
      git rebase --onto master feature-b feature-a
      
  • 清理完成后直接给feature-a提PR即可,和常规工作流完全一致,不会出现多余的提交记录。

方案2:基于feature-b新建feature-a分支(适合feature-a还未开始大量开发的场景)

  • 切换到最新的feature-b分支后直接新建feature-a分支:
    git checkout feature-b
    git pull origin feature-b
    git checkout -b feature-a
    
  • 后续开发和历史清理逻辑和方案1完全一致,等feature-b合入master后执行rebase --onto清理即可。

注意事项

  • 不要直接执行git merge feature-b到feature-a分支,否则后续feature-b squash合入master后,feature-a会残留feature-b的旧提交记录,导致PR出现冗余变更。
  • rebase过程中出现冲突只需要解决一次,后续清理历史时如果feature-b的提交没有变更,不会重复触发冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:36:04