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

多次合并依赖分支后,如何Rebase并清理Git提交历史并入Master?

这问题我碰到过好多次了,依赖分支频繁同步导致的冗余合并记录确实头疼,给你一套干净利落的方案,不用手动cherry pick:

最优解决方案:变基+线性合并
  • 第一步:同步所有分支到最新状态
    先把远程仓库的最新变更拉到本地,避免后续操作出现不必要的冲突:

    git fetch origin
    git checkout A
    git pull origin A  # 确保本地分支A完全同步远程最新版本
    git checkout master
    git pull origin master  # 同步master分支的最新状态
    
  • 第二步:清理分支B的冗余合并记录
    把分支B的提交变基到最新的分支A上,Git会自动帮你过滤掉那些merge origin/A的冗余提交,只保留B自己的功能提交,最终B的提交历史会变成线性的:

    git checkout B
    git rebase A
    

    小提示:如果之前merge时解决过冲突,rebase过程中可能会再次触发冲突,只需要像之前一样解决冲突,然后执行git add .和git rebase --continue即可,直到变基完成。

  • 第三步:合并分支A到master
    因为B依赖A的功能,先把稳定完成的A合并到master:

    git checkout master
    git merge A
    

    如果A的提交都在master之后,会自动触发快进合并,master的历史会非常干净;如果有冲突,解决后完成合并即可。

  • 第四步:将清理后的B合并到master
    现在B已经基于最新的A,而master也合并了A,我们可以把B变基到master上(可选,让整个提交历史更线性),然后合并:

    git checkout B
    git rebase master  # 这一步可选,若想让B的提交直接紧跟master就执行
    git checkout master
    git merge B
    

    经过变基后,merge B到master会是快进合并,整个master的提交历史完全线性,没有任何冗余合并记录。

  • 最后:推送变更到远程
    因为我们修改了分支B的提交历史(变基操作),所以需要强制推送B到远程**(务必提前和同事沟通,确保此时没人在B上开发!)**:

    git push origin B --force-with-lease  # 用--force-with-lease比--force更安全,避免误覆盖他人提交
    git push origin master
    git push origin A  # 如果A有更新也同步推送
    

额外注意事项

  • 一定要确认分支A已经开发完成,同事不会再往A上提交新内容,否则后续还要重复处理。
  • 变基的核心是把你的提交「重新播放」在目标分支的最新提交之后,自动过滤冗余合并记录,完美替代手动cherry pick所有提交的繁琐操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:02:39