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

如何将my-branch rebase到staging-branch后将自有提交合并为2个

Git Rebase 并拆分提交操作指南

前置操作:完成 my-branch 到 staging-branch 的 rebase

先执行以下命令完成你期望的提交结构拼接:

  • 切换到my-branch分支:git checkout my-branch
  • 执行rebase操作:git rebase staging-branch
    操作完成后,my-branch的提交结构就会变成 A---B---C---D---E---A5---A4---A3---A2---A1 的形式。

核心操作:将5条自有提交合并为2条

你可以根据自己的使用习惯选择以下任意一种方法:

方法1:交互式rebase(按原有提交顺序合并)

适合你需要按原有提交的先后顺序分组合并的场景:

  • 执行交互式rebase命令,指定操作最近5条提交:git rebase -i HEAD~5
  • 弹出的编辑页中会按从旧到新的顺序列出5条提交(第一行是最旧的A5,最后一行是最新的A1),默认前缀都是pick
  • 调整前缀:把需要合并到第一个新提交A11的提交前缀从pick改为s(squash缩写,代表合并到上一条pick的提交),剩下需要合并到A22的提交同样改前缀,示例配置:
    pick 哈希值A5 A5的提交信息
    s 哈希值A4 A4的提交信息
    s 哈希值A3 A3的提交信息
    pick 哈希值A2 A2的提交信息
    s 哈希值A1 A1的提交信息
    
  • 保存退出编辑页后,git会先后弹出两次提交信息编辑框,分别输入A11、A22的提交信息保存即可完成合并。

方法2:soft reset 手动拆分提交

适合你需要按文件/功能灵活拆分两个提交的场景,也是你当前已知方法的扩展:

  • 先回退5条提交,所有修改保留在工作区和暂存区:git reset --soft HEAD~5
  • 挑选需要放到第一个提交A11的修改,通过git add 对应文件名或者git add -p选择部分改动加入暂存区
  • 提交第一个新提交:git commit -m "A11"
  • 把剩余未暂存的所有修改加入暂存区,提交第二个新提交:git add . && git commit -m "A22"

推送更新到远端

由于你修改了分支的提交历史,需要强制推送覆盖远端分支:
git push origin my-branch -f
如果是多人协作的公共分支,推送前请提前同步给其他协作人员,避免冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:39:01