首页/开发/Git 与协作速查/按合并状态与包含关系筛选分支

按合并状态与包含关系筛选分支

反查分支与提交关系:--contains 列出包含某提交的分支、--merged/--no-merged 按合并状态过滤,发布排查常用。

Git 与协作速查开发更新于 2026-10-13

按包含与合并状态筛选

反查分支与提交之间的关系:列出包含某个提交的分支,以及按是否已合并来过滤分支列表。发布与故障排查时常用它回答「这个修复进了哪些分支」「哪些分支还没并入主干」。

基本信息

包含关系列出包含指定提交的分支
已合并列出已经并入指定分支的分支
未合并列出尚未并入指定分支的分支
作用范围可只看本地分支,也可同时包含远端分支
判断依据基于提交的可达性,而不是内容是否相同

典型使用场景

  • 排查某个修复究竟进了哪些分支
  • 清理前找出已经并入主干的分支
  • 确认发布分支是否包含某个修复
  • 列出尚未合入的功能分支以便跟进
  • 对比同名分支在本地与远端的状态

常用示例

常用示例
git branch --contains <提交哈希>         # 哪些本地分支包含该提交
git branch -a --contains v1.2.0          # 本地与远端一起查
git branch --merged main                 # 已并入主干的本地分支
git branch -r --no-merged origin/main    # 远端里还没并入主干的分支
git branch -a --contains <提交> | wc -l   # 统计涉及的分支数量

选项与含义

选项含义
包含关系该提交可达的全部分支
已合并已并入目标分支,可考虑清理
未合并尚未并入,需要保留或跟进
远端限定只看远端跟踪分支
判断依据是提交可达性:改写历史或变基之后内容相同但哈希不同,结论会随之变化,排查前先确认历史有没有被动过。
浅克隆历史不全时结果可能失真,涉及发布判断之前先补齐历史。
清理分支时「已合并」是必要条件而非充分条件:本地分支可能还有未推送的提交,删除前先确认状态。
同一个提交可能同时存在于多个分支上,统计数量时按分支名去重,避免重复计数。
确认某个分支是否已并入主干,比逐个比对文件内容可靠得多,也是分支清理前的例行检查。

易错点

  • 把可达性判断当成内容比较,变基后结论变化被误认为工具出错
  • 浅克隆下结果失真,据此判断发布分支不含修复,结论不可靠
  • 仅凭已合并标记就删除分支,忽略了本地还有未推送的提交
  • 只看本地分支而漏掉远端,误判某个修复没有进入发布线

数据来源与参考

  • Git 官方文档:git-branch(--contains/--merged/--no-merged)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌