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

如何在未知合并哈希时获取Release分支两次合并间的Feature分支列表

获取Git合并提交间的Feature分支与提交列表

一、获取Feature分支列表(通用方式,无需手动指定哈希)

Git没有原生直接列出合并提交关联分支的命令,但可以通过脚本批量检查(前提是Feature分支未被删除且命名有规律,比如统一前缀features/):

方法1:基于合并提交消息检查

如果合并Feature分支时使用默认的Merge branch 'xxx'消息,可通过匹配日志关键词筛选:

# 遍历所有features前缀的分支
for branch in $(git branch --list 'features/*'); do
  # 检查该分支的合并记录是否存在于release最近两次合并提交之间
  if git log --oneline release~2..release --grep="Merge branch '$branch'" --quiet; then
    echo "$branch"
  fi
done

方法2:基于提交祖先关系检查

如果合并消息被修改过,可通过提交的祖先关系判断分支是否被合并到目标区间:

# 定义区间起点(release上上次合并提交的父节点)和终点(当前release HEAD)
START=$(git rev-parse release~2)
END=$(git rev-parse release)

for branch in $(git branch --list 'features/*'); do
  # 分支提交已包含在END,但未包含在START,说明是在两次合并之间被合并的
  if git merge-base --is-ancestor "$branch" "$END" && ! git merge-base --is-ancestor "$branch" "$START"; then
    echo "$branch"
  fi
done

⚠️ 注意:如果Feature分支在合并后还有新提交,此方法会误判,需确保合并后Feature分支不再改动。

二、获取提交列表(更可靠的方案)

无需手动指定哈希,直接通过相对引用定位区间,即可获取两次合并之间的所有提交:

1. 显示区间内所有提交(含合并提交)

git log --oneline release~2..release

2. 仅显示Feature分支的提交(排除合并提交)

git log --oneline --no-merges release~2..release

3. 显示仅存在于release中但不在上上次合并前的提交

git cherry release~2 release

此命令会输出每个提交的哈希和摘要,标记+表示仅在release中存在的提交,也就是两次合并之间新增的提交。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:02:48