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

链式特性分支的正确合并:已删除分支的rebase定位问题

定位已删除分支的最后提交并完成rebase

场景回顾

跨分支特性开发流程:

  1. 基于main分支创建issue-1分支,开发提交E-F-G;
  2. 基于issue-1创建issue-2分支,开发提交H-I-J;
  3. issue-1被squash合并到main生成提交K,随后issue-1分支被删除;
  4. 此时issue-2的历史包含已合并到main的E-F-G提交,需要将H-I-J平滑rebase到main分支。

定位已删除分支的最后提交G的方法

1. 通过提交变更匹配

  • 先查看squash合并提交K的变更文件:
    git show --stat K
    
  • 再遍历issue-2的提交变更,找到最后一个与K的变更文件完全匹配的提交(即issue-1的收尾提交G):
    git log --stat issue-2
    

2. 筛选分支独有提交反推

  • 列出issue-2中所有未合并到main的提交(即H-I-J):
    git log --oneline issue-2 ^main
    
  • 取列表中第一个提交H的父提交,即为G:
    git rev-parse <H的哈希>^
    

3. 本地reflog回溯(仅适用于未清理reflog的情况)

  • 查找本地reflog中与issue-1相关的记录,最后一条记录的哈希即为G:
    git reflog | grep issue-1
    

更优方案:无需定位G的交互式rebase

直接通过交互式rebase跳过已合并的提交,无需手动查找G:

  1. 执行交互式rebase命令:
    git rebase -i main issue-2
    
  2. 在弹出的编辑窗口中,删除E-F-G对应的pick行,仅保留H-I-J的pick命令;
  3. 保存并退出编辑器,Git会自动将H-I-J重写到main分支(K之后),完成后issue-2的历史即为预期的:
    A--B--C---------K (main)
                    \
                     H'--I'--J' (issue-2)
    

内容的提问来源于stack exchange,提问作者andrejb-dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:36:29