按包含与合并状态筛选
反查分支与提交之间的关系:列出包含某个提交的分支,以及按是否已合并来过滤分支列表。发布与故障排查时常用它回答「这个修复进了哪些分支」「哪些分支还没并入主干」。
基本信息
| 包含关系 | 列出包含指定提交的分支 |
|---|---|
| 已合并 | 列出已经并入指定分支的分支 |
| 未合并 | 列出尚未并入指定分支的分支 |
| 作用范围 | 可只看本地分支,也可同时包含远端分支 |
| 判断依据 | 基于提交的可达性,而不是内容是否相同 |
典型使用场景
- 排查某个修复究竟进了哪些分支
- 清理前找出已经并入主干的分支
- 确认发布分支是否包含某个修复
- 列出尚未合入的功能分支以便跟进
- 对比同名分支在本地与远端的状态
常用示例
常用示例
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 # 统计涉及的分支数量选项与含义
| 选项 | 含义 |
|---|---|
| 包含关系 | 该提交可达的全部分支 |
| 已合并 | 已并入目标分支,可考虑清理 |
| 未合并 | 尚未并入,需要保留或跟进 |
| 远端限定 | 只看远端跟踪分支 |
判断依据是提交可达性:改写历史或变基之后内容相同但哈希不同,结论会随之变化,排查前先确认历史有没有被动过。
浅克隆历史不全时结果可能失真,涉及发布判断之前先补齐历史。
清理分支时「已合并」是必要条件而非充分条件:本地分支可能还有未推送的提交,删除前先确认状态。
同一个提交可能同时存在于多个分支上,统计数量时按分支名去重,避免重复计数。
确认某个分支是否已并入主干,比逐个比对文件内容可靠得多,也是分支清理前的例行检查。