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

Git父分支squash合并到master后,子分支该如何正确调整?

问题解答

1. 猜测正确性判断

你的猜测完全正确。父分支的提交被squash合并到master生成M52后,原P1P4的提交不会出现在master的提交历史中,child分支的C1C3提交的父提交(P4)不属于master链路,所以会呈现为从M3之后直接分叉出C1~C3的结构。

2. 具体操作命令

操作前建议先给当前child分支打个临时备份标签,避免操作失误丢失代码:
git tag backup_child_before_rebase
后续如果要恢复的话执行git reset --hard backup_child_before_rebase即可回到操作前的状态。

正式操作步骤如下:

  • 第一步:切换到master分支,拉取最新代码,确保本地已经同步到包含M52的最新版本
git checkout master
git pull origin master
  • 第二步:切换到child分支
    git checkout child
  • 第三步:执行带onto参数的rebase操作
    git rebase --onto master P4

说明:

  • 命令中P4需要替换为你本地P4提交对应的哈希值,如果你不确定P4的哈希,可以执行git log --oneline找到C1提交的前一条提交记录的哈希值填入即可
  • 该命令的含义是:将当前child分支上、所有在P4提交之后的提交(也就是C1~C3),全部迁移到master分支的最新提交(即M52)上
  • 第四步:处理冲突(如果存在)
    若rebase过程中提示冲突,手动修改冲突文件后执行git add <冲突文件名>,再执行git rebase --continue即可继续流程;如果想要终止本次rebase,执行git rebase --abort即可回到操作前的状态。
  • 第五步:推送更新到远程(如果之前已经推送过child分支到远程仓库)
    因为rebase会改写分支提交历史,所以需要强制推送,推荐使用更安全的--force-with-lease参数,避免覆盖其他同事推送到远程child分支的新改动:
    git push --force-with-lease origin child

操作完成后你的分支结构就会变成预期的C1~C3基于M52检出的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:27:02