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

PR中使用Git变基时,如何合并自身提交且保留他人提交?

解决方案:保留他人提交并合并自身提交

针对Blue的提交,直接选择**pick(或缩写p)**即可——完全不用担心你的合并改动会混入Blue的提交。pick操作的作用就是原封不动保留该提交的所有内容、作者信息和提交历史,和你的Red提交合并操作完全隔离,不会产生任何交叉修改。

你当前的rebase指令存在错误:前三个Red提交都设为squash,但它们没有对应的pick提交作为合并基础(squash必须依附于一个pick的提交)。根据你的需求,这里提供两种可行的调整方案:

方案1:保持提交相对顺序,合并Blue前后的Red提交

如果你希望Blue的提交仍保留在原历史位置(夹在Red的提交之间),可以这样设置交互式rebase的操作列表:

p a123bc Red  # 将最早的Red提交作为合并基础
s a123bd Red  # 合并到上一个pick的Red提交
s a123be Red  # 合并到上一个pick的Red提交
p a123bf Blue # 原封不动保留Blue的提交
p a123bg Red  # 保留最后一个Red提交(若要将它也合并到前面的Red提交,可改为`s`,但可能引发冲突,需谨慎)

最终历史会是:合并后的Red提交(包含前3个Red改动)→ Blue提交 → 单独的Red提交(最后1个)。

方案2:合并所有Red提交为一个,调整提交顺序

如果你一定要把所有Red的提交合并成一个,需要调整提交顺序,把所有Red提交放在一起合并,再保留Blue提交:

p a123bg Red  # 用最新的Red提交作为合并基础
s a123be Red  # 合并到上一个pick的Red提交
s a123bd Red  # 合并到上一个pick的Red提交
s a123bc Red  # 合并到上一个pick的Red提交
p a123bf Blue # 原封不动保留Blue的提交

最终历史会是:合并后的Red提交(包含所有4个Red改动)→ Blue提交,Blue的提交内容完全不受影响。

注意事项

  • 执行rebase前建议备份当前分支(比如git branch backup),防止操作失误丢失提交。
  • 如果rebase过程中出现冲突,解决冲突后执行git rebase --continue即可完成操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 11:50:12