You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Git命令统计非main分支自指定tag以来的提交次数

Git统计dev分支自指定tag合并后的新增提交数方案

问题原因

你之前使用git rev-list v1.2.3..HEAD --count得到不符合预期的结果,核心原因是双点语法A..B的默认逻辑是统计所有可从B到达、但不可从A到达的提交。dev作为长期开发分支,存在大量合并v1.2.3之前就产生的、从未合并到main的历史提交,这些旧提交都会被计入统计结果,所以数值远大于预期。

正确命令

你可以先定位到dev分支主提交链上最早包含目标tag的节点(也就是你把main上的tag版本合并到dev的合并节点),再从该节点开始统计:

# 合并完成后初始返回0,仅统计合并tag后dev上的新增提交
git rev-list $(git rev-list --first-parent HEAD --contains v1.2.3 | tail -n 1)..HEAD --first-parent --count

如果需要包含合并tag产生的合并提交,可调整为:

# 合并完成后初始返回1(包含合并tag的提交)
git rev-list $(git rev-list --first-parent HEAD --contains v1.2.3 | tail -n 1)^..HEAD --first-parent --count

参数说明

  • git rev-list --first-parent HEAD --contains v1.2.3 | tail -n 1:仅遍历dev分支的主提交链(跳过合并进来的其他分支线),找到最早包含目标tag的提交,也就是统计的基准节点
  • --first-parent:统计时同样只遍历dev的主提交链,避免将其他临时分支合并到dev的提交计入结果
  • 可按需追加--no-merges参数,排除所有合并提交,仅统计普通功能提交

效果验证

对应你给出的示例场景:

  1. 刚把v1.2.3对应的main版本合并到dev后运行第一条命令,返回结果为0,符合预期
  2. 在dev上新增1次提交后运行,返回结果为1,符合预期
  3. 若使用包含合并提交的命令,合并完成后返回结果为1,也符合你的备选预期

内容的提问来源于stack exchange,提问作者ppython

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:45:05