如何统计Git分支的推送次数?非提交次数统计需求
统计向Git分支的推送次数(用于GitHub Actions)
Git本身不会直接追踪向分支的推送次数,它仅记录提交历史。git rev-list --count只能统计分支上的提交总数,无法满足统计推送次数的需求。针对GitHub Actions场景,可通过以下方法实现:
方法一:调用GitHub REST API统计推送事件
借助GitHub的Events API筛选目标分支的PushEvent事件,统计其数量,这是最直接的方案:
GitHub Actions示例代码
- name: 获取当前分支的推送次数 id: push-count run: | # 提取当前分支名称 BRANCH_NAME=${GITHUB_REF##*/} # 调用GitHub API获取推送事件并统计数量 PUSH_COUNT=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ "https://api.github.com/repos/${{ github.repository }}/events?per_page=100" \ | jq '[.[] | select(.type == "PushEvent" and .payload.ref == "refs/heads/'$BRANCH_NAME'")] | length') # 将结果输出为Actions变量 echo "count=$PUSH_COUNT" >> $GITHUB_OUTPUT - name: 输出推送次数 run: echo "当前分支推送次数为 ${{ steps.push-count.outputs.count }}"
注意事项
- 上述API请求默认返回最近100条事件,若分支推送次数超过100,需要处理分页逻辑(通过
page参数循环请求累加数量)。 ${{ secrets.GITHUB_TOKEN }}是GitHub Actions自动提供的令牌,具备仓库事件的读取权限。
方法二:基于推送标记的统计(需额外配置)
如果每次推送都通过自动化流程打专属标签(比如push-v1、push-v2),可以通过标签统计推送次数:
git tag -l "push-v*" | wc -l
但该方案需要额外的标签生成逻辑,通用性较弱。
内容的提问来源于stack exchange,提问作者Amin Ba
相关产品推荐
相关产品推荐

