首页/开发/Git 与协作速查/提交区间 A..B 与 A...B
Git 基础与命令88 条

提交区间 A..B 与 A...B

区间语法查差异:A..B 是「在 B 不在 A」,A...B 是两分支的对称差,配 --left-right 标出每个提交属于哪一侧。

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

提交区间语法是什么

在 git log 里写两个点或三个点表示的是「可达性」范围,而不是时间先后。A..B 表示从 B 可到达但 A 不可到达的提交,也就是「分支 B 带来的新增内容」;A...B 表示两个分支各自的对称差,配合 --left-right 才能看出每条提交属于哪一侧。理解这两个符号是读懂评审范围、构造变更日志与排查分支来源的基础。

基本信息

A..BB 有而 A 没有的提交,即 B 独有的新增
A...B两分支对称差,即各自独有的提交
--left-right用 < 与 > 标出提交属于哪一侧
--not反向排除写法,如 git log feature --not main
平台任意 Git 客户端

典型使用场景

  • 评审前确认这个分支到底带来了哪些提交
  • 生成两个版本之间的变更清单
  • 统计分支未合入主线的提交数量
  • 找出两个分支各自独有的提交,判断是否需要同步
  • 配合 --left-right 快速区分提交来源
  • 排查合并后主干为何缺少某些提交

常用示例

常用示例
git log main..feature --oneline              # feature 独有的提交
git log --left-right main...feature --oneline # 标出各自独有
git log feature --not main                   # 等价于 main..feature
git rev-list --count main..feature            # 只统计条数
git log --left-right --cherry-pick main...feature  # 忽略等价补丁

两种写法对比

写法含义
A..B从 B 可达且从 A 不可达的提交
A...BA 与 B 的对称差,两侧独有的提交
A..B 等价git log B --not A
评审时常用 main..feature 快速确认「这个分支带来了哪些提交」,数量过多通常说明分支该拆了。
区间两端按提交可达性计算而非时间顺序:变基或改写历史后旧提交号变化,区间结果也会随之改变。
两侧各自包含等价补丁时(例如同一改动被分别挑选到两条分支),普通的对称差会把它们都列出来,加 --cherry-pick 可以忽略这类等价提交。

核对分支范围的动作

  • 先用 --oneline 看提交清单,再决定是否加 --stat 或 -p
  • 确认分支是否被 rebase 过,被改写后哈希变化会让区间结果与印象不符
  • 范围过大时用 --author 或 --since 缩小到关注部分
  • 需要精确条数时用 rev-list --count,避免人眼数错

易错点

  • A...B 不加 --left-right 时无法区分提交来自哪一侧,两侧独有的提交会混在一起
  • 区间按可达性而非时间计算,rebase 之后旧提交哈希变化会影响结果,用前先确认分支是否被改写
  • 把 A..B 与 B..A 记反是常见错误,方向错了会得到完全相反的一份清单
  • 合并后的分支用 main..feature 可能为空,因为提交已并入主干,此时应改用 main...feature
  • 在浅克隆仓库上区间计算可能缺失提交,追溯范围前先确认克隆完整
  • 把区间当时间范围使用会得出错误结论,它筛的是提交归属而不是提交时间

数据来源与参考

  • Git 官方文档:git-log(A..B 区间语法)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌