如何获取GitHub中跳过必填检查的强制合并记录?
获取GitHub跳过必填检查的强制合并记录
你要找的是跳过分支保护规则中必填检查的强制合并记录,下面是具体的实现方法:
方法一:使用GitHub CLI(推荐)
先确保已安装并登录GitHub CLI(执行gh auth login完成登录),替换命令中的{OWNER}(仓库所有者)和{REPO}(仓库名称)后运行:
筛选含跳过检查关键词的合并提交
如果团队习惯用提交信息关键词跳过检查(比如[skip ci]、[ci skip]),可以用这个命令提取过去24小时的相关记录:
gh api repos/{OWNER}/{REPO}/commits \ --method GET \ -f since="$(date -d '-24 hours' --utc +%Y-%m-%dT%H:%M:%SZ)" \ --jq '.[] | select(.commit.message | test("\\[skip ci\\]|\\[ci skip\\]|\\[no ci\\]|\\[skip checks\\]|\\[checks skip\\]")) | {sha: .sha, message: .commit.message, author: .commit.author.name, date: .commit.author.date}'
精准筛选强制跳过必填检查的PR
如果要精准识别绕过分支保护规则中必填检查的强制合并记录,需要查询PR的状态:
gh api repos/{OWNER}/{REPO}/pulls?state=closed&merged=true&sort=updated&direction=desc \ --jq '.[] | select(.merged_at >= "'$(date -d '-24 hours' --utc +%Y-%m-%dT%H:%M:%SZ)'") | .url' | xargs -I {} gh api {} \ --jq 'select(.required_checks_skipped == true) | {pr_number: .number, title: .title, merged_by: .merged_by.login, merge_sha: .merge_commit_sha, merged_at: .merged_at}'
这个命令会先拉取过去24小时内合并的PR,再逐个检查是否跳过了必填检查,最终返回符合条件的PR关键信息。
方法二:使用curl直接调用GitHub API
如果不想用GitHub CLI,可以用curl结合个人访问令牌(PAT)请求API,PAT需要具备repo权限:
curl -H "Authorization: token YOUR_PAT" \ "https://api.github.com/repos/{OWNER}/{REPO}/pulls?state=closed&merged=true&since=$(date -d '-24 hours' --utc +%Y-%m-%dT%H:%M:%SZ)" | \ jq '.[] | {number: .number, url: .url}' | \ while read -r pr; do pr_url=$(echo "$pr" | jq -r '.url') curl -H "Authorization: token YOUR_PAT" "$pr_url" | \ jq 'select(.required_checks_skipped == true) | {pr_number: .number, title: .title, merged_by: .merged_by.login, merge_sha: .merge_commit_sha, merged_at: .merged_at}' done
注意事项
- 上述命令依赖
jq工具,需提前安装(Linux用sudo apt install jq,macOS用brew install jq) - 提交信息的跳过关键词可根据团队实际配置修改正则表达式
- 若仓库属于组织,确保你的PAT拥有该仓库的访问权限
内容的提问来源于stack exchange,提问作者SAI
相关产品推荐
相关产品推荐

