首页/开发/Git 与协作速查/git rev-list 遍历提交集合
Git 基础与命令88 条

git rev-list 遍历提交集合

输出可达提交的哈希列表:--count 计数、--all 覆盖全部引用、区间语法与 log 一致,是统计脚本的基础。

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

git rev-list 是什么

rev-list 输出某组引用可达提交的哈希列表(每行一个),是统计脚本的基础命令:--count 只输出数量,区间语法与 git log 完全一致,配合 --all 可覆盖全部引用。它面向「处理」而不是「浏览」——把提交集合变成机器可处理的列表,供脚本、CI 与审计工具消费。

基本信息

输出提交哈希,每行一个,适合喂给脚本
--count只输出数量,方便脚本取值
区间语法与 git log 相同(A..B、A...B、--not)
常用过滤--since、--until、--author 等与 log 共用
适用平台所有平台通用;大仓全量遍历注意耗时

典型使用场景

  • 评审前统计:feature 分支相对主线多出多少提交。
  • 发布工具链:导出两个标签之间的提交哈希供工具二次处理。
  • 仓库体检:统计全仓提交总数与时间窗内的活跃度。
  • 脚本管道:把哈希列表喂给 show、grep 做批量检查。
  • 找未合并提交:用 --not 排除已并入集合,定位漏合并分支。
  • 评估发布范围:v1.0..HEAD --count 一条命令算出下一版本累计提交量。

常用示例

常用示例
git rev-list --count HEAD                  # 当前分支提交总数
git rev-list --count main..feature         # feature 比 main 多的提交数
git rev-list --all --count                 # 全部引用可达提交总数
git rev-list HEAD --not main | head        # 列出 feature 独有提交
git rev-list --since='2026-09-01' --count HEAD   # 时间窗内提交量

常用选项

选项作用备注
--count只输出数量脚本取值方便
--all覆盖所有引用大仓注意耗时
A..BB 独有提交(差集)统计分支增量
--not排除可达集合找未合并提交
--since/--until按时间过滤与 log 用法一致,适合月度统计
只输出哈希、不带作者与主题,看内容请用 git log;大仓对 --all 做全量遍历较重,统计时尽量限定范围。与 log 的关系是:log 相当于 rev-list 加提交摘要渲染——要名单用 rev-list,要阅读用 log;默认输出按提交时间逆序,做审计时留意时钟偏差带来的排序错觉。

易错点

  • 把 rev-list 当 log 用:输出只有哈希看不出内容;浏览用 log,批处理才用 rev-list;两者选项相通,但输出用途完全不同。
  • A..B 与 A B 语义不同(差集 vs 并集),脚本里写错范围统计结果就错,写完先用小样本验证。
  • --all 在大仓上全量遍历耗时明显;加 --since 或限定引用缩小范围。
  • 依赖输出顺序的脚本要显式加 --date-order 或 --topo-order;默认顺序不承诺拓扑稳定;统计合并提交数记得加 --no-merges,否则数字与评审口径对不上。

数据来源与参考

  • Git 官方文档:git-rev-list
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌