如何列出指定提交/时间点后合并到分支的所有合并记录?
查看指定提交后合并到目标分支的合并记录(含源分支)
命令行方案
1. 快速筛选合并提交
直接用git log精准定位目标范围内的合并记录,同时输出关键信息:
git log 9de0a508..dev --merges --pretty=format:"%h | %s | Parent Hashes: %P"
9de0a508..dev:限定查询范围是提交9de0a508之后到当前dev分支的所有提交--merges:只保留合并提交(这类提交有多个父节点,是分支合并产生的)--pretty=format:自定义输出格式,%h是短提交哈希,%s是提交标题,%P是所有父提交的哈希值,方便后续溯源
2. 自动识别源分支
如果合并提交的备注里没写源分支,用下面的脚本自动匹配:
git log 9de0a508..dev --merges --pretty=format:"Merge: %h | Message: %s | Parent: %P" | while read line; do parent_hash=$(echo "$line" | awk '{print $7}') source_branch=$(git branch --contains $parent_hash | grep -v "*" | head -n1) echo "$line | Source Branch: $source_branch" done
原理是合并提交的第二个父哈希(%P输出的第二个值)一般是被合并分支的最后提交,通过git branch --contains找到包含该提交的分支,就能得到源分支名称。
3. 按时间点筛选
如果要按时间而非提交哈希划分范围,把起始提交换成时间参数:
git log --since="2024-03-01" dev --merges --pretty=format:"%h | %s | Parent Hashes: %P"
时间格式支持多种写法,比如"2 weeks ago"也可以。
TortoiseGit图形化方案
1. 打开日志筛选界面
右键仓库文件夹 → 选TortoiseGit → Show Log
2. 设置筛选条件
- 点击日志窗口顶部的漏斗图标(
Filter按钮) - 在筛选弹窗里:
- 勾选
Only merge commits,只显示合并记录 - 在
From输入框填目标提交哈希9de0a508,或者点日历图标选时间点 - 点
OK应用筛选,日志列表就会只显示符合条件的合并提交
- 勾选
3. 查看源分支信息
- 选中一条合并记录,右键 → 选
Browse reference log - 在弹出的窗口里,查看该合并提交的第二个父提交对应的分支;如果合并时备注了源分支,直接看提交信息栏就能看到。
内容的提问来源于stack exchange,提问作者ChumboChappati
相关产品推荐
相关产品推荐

