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

如何查找指定提交SHA首次被合并的合并提交SHA?

如何查找指定提交SHA首次被合并的合并提交SHA?

我完全懂你的困扰——你要找的是某个提交第一次被合并到其他分支的那个合并提交,而不是后续从上游分支再合并过来的那些(比如你场景里的merge #2,其实只是把包含fix的release分支合并到main,并不是fix提交的首次合并)。针对这个需求,这里有几个实用的Git命令方案:

方案1:用git rev-list精准定位最早的合并提交

这个命令会直接输出你要的SHA,无需手动筛选:

git rev-list --merges --ancestor-path <你的fix提交SHA>..<目标分支名或最新提交SHA> | tail -n 1

参数解释:

  • --merges:只筛选合并提交,排除普通提交
  • --ancestor-path:确保只追踪从fix提交到目标分支的直接路径,不会混入其他无关分支的合并记录
  • tail -n 1:因为git rev-list默认是从新到旧排序,取最后一条就是最早的那个合并提交(也就是你的merge #1)

方案2:用git log可视化筛选

如果你想先看看所有相关的合并提交再确认,这个命令更直观:

git log --merges --oneline --contains=<你的fix提交SHA> --reverse <分支范围>

比如针对你的场景,你可以这样写:

git log --merges --oneline --contains=abc123 --reverse release main

参数解释:

  • --contains=<fix提交SHA>:只显示包含该fix提交的合并提交
  • --reverse:把日志顺序反过来,从旧到新排列,第一条就是首次合并的记录
  • <分支范围>:指定只在release和main分支里查找,避免其他分支的合并记录干扰

为什么之前的git find-merge没得到想要的结果?

之前的脚本大概率是在给定的SHA范围内,找最新的包含目标提交的合并提交,所以它返回了merge #2(因为merge #2比merge #1更新)。而我们上面的方法都是针对“最早”这个需求来调整的,刚好匹配你的场景。

备注:内容来源于stack exchange,提问作者DMCApps

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 14:07:29