提交区间语法是什么
在 git log 里写两个点或三个点表示的是「可达性」范围,而不是时间先后。A..B 表示从 B 可到达但 A 不可到达的提交,也就是「分支 B 带来的新增内容」;A...B 表示两个分支各自的对称差,配合 --left-right 才能看出每条提交属于哪一侧。理解这两个符号是读懂评审范围、构造变更日志与排查分支来源的基础。
基本信息
| A..B | B 有而 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...B | A 与 B 的对称差,两侧独有的提交 |
| A..B 等价 | git log B --not A |
评审时常用 main..feature 快速确认「这个分支带来了哪些提交」,数量过多通常说明分支该拆了。
区间两端按提交可达性计算而非时间顺序:变基或改写历史后旧提交号变化,区间结果也会随之改变。
两侧各自包含等价补丁时(例如同一改动被分别挑选到两条分支),普通的对称差会把它们都列出来,加 --cherry-pick 可以忽略这类等价提交。
核对分支范围的动作
- 先用 --oneline 看提交清单,再决定是否加 --stat 或 -p
- 确认分支是否被 rebase 过,被改写后哈希变化会让区间结果与印象不符
- 范围过大时用 --author 或 --since 缩小到关注部分
- 需要精确条数时用 rev-list --count,避免人眼数错