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

如何统计最近合并的Pull Request提交数量并实现自动化?

统计合并Pull Request的提交数量并实现自动化

一、使用Git命令手动/脚本化统计

如果已有目标仓库的本地副本,可通过以下方式获取合并PR的提交数:

方法1:通过合并提交哈希计算

每个合并提交包含两个父提交(分别对应PR合并前的目标分支头、PR源分支头),直接计算两个父提交之间的提交数量:

# 替换<merge-commit-hash>为实际的合并提交哈希
PARENTS=$(git show -s --pretty=%P <merge-commit-hash>)
git rev-list --count $(echo $PARENTS | awk '{print $1}')..$(echo $PARENTS | awk '{print $2}')

方法2:通过PR编号临时拉取分支计算

如果知道PR的编号(如GitHub上的PR编号),可临时拉取PR的源分支,再和目标分支对比:

# 替换<PR-number>为实际PR编号,<target-branch>为合并目标分支(如main)
git fetch origin pull/<PR-number>/head:temp-pr-branch
git rev-list --count <target-branch>..temp-pr-branch
git branch -D temp-pr-branch  # 清理临时分支

脚本自动化示例

写一个简单的Shell脚本,接收PR编号和目标分支参数,自动输出提交数:

#!/bin/bash
PR_NUMBER=$1
TARGET_BRANCH=$2

git fetch origin pull/$PR_NUMBER/head:temp-pr-branch > /dev/null 2>&1
COMMIT_COUNT=$(git rev-list --count $TARGET_BRANCH..temp-pr-branch)
echo $COMMIT_COUNT
git branch -D temp-pr-branch > /dev/null 2>&1

二、使用API实现自动化(以GitHub为例)

如果需要完全自动化且无需本地仓库,可直接调用仓库平台的API:

1. 获取指定PR的提交数

调用PR详情接口,返回的JSON数据中commits字段即为该PR的提交总数:

# 替换<owner>、<repo>、<PR-number>为实际值,<token>为你的GitHub访问令牌
curl -H "Authorization: token <token>" \
  https://api.github.com/repos/<owner>/<repo>/pulls/<PR-number> | jq '.commits'

2. 获取最近合并的PR的提交数

先查询最近关闭且已合并的PR,再提取其提交数:

# 获取最近合并的PR的提交数
curl -H "Authorization: token <token>" \
  https://api.github.com/repos/<owner>/<repo>/pulls?state=closed&sort=updated&direction=desc&per_page=1 | jq '.[0] | select(.merged_at != null) | .commits'

注:如果使用其他Git平台(如GitLab、Gitee),可参考对应平台的API文档,逻辑类似——先获取PR详情,提取提交数字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:27:28