如何通过GitHub Enterprise API身份验证后正确创建Pull Request
问题根因
- 直接原因:调用创建PR的POST请求的curl命令未携带
-u [MY_USER_NAME]:[MY_TOKEN]身份认证参数,和第一个调用/user接口的curl对比就能发现缺少了认证字段,这是触发身份验证报错的核心原因。 - 次要潜在问题:提交的JSON数据格式不符合标准,JSON要求键和字符串值必须用双引号包裹,当前用单引号包裹键,即使补全认证也会返回参数错误。
- 可能的权限问题:如果补全认证后仍报错,需要确认你的PAT(个人访问令牌)已授予
repo读写权限,且你对目标仓库有创建PR的操作权限。
排查解决步骤
- 给创建PR的curl请求添加身份认证参数,和第一个/user接口的认证配置保持一致
- 修正POST请求的JSON格式,调整参数写法适配shell转义规则,避免JSON解析失败
- 建议将用户名、令牌、组织、仓库这些公共参数提取为变量,避免重复编写出现不一致
- 若调整后仍报错,可将UUID替换为实际存在的分支名,手动执行curl命令测试接口返回,定位具体问题
修正后的脚本参考
#!/bin/sh # 公共参数配置 GITHUB_USER="你的用户名" GITHUB_TOKEN="你的令牌" GITHUB_ORG="你的组织域名" TARGET_REPO="你的仓库名" TARGET_BASE_BRANCH="master" CURRENT_BRANCH=$(git branch --show-current) git stash save git checkout ${TARGET_BASE_BRANCH} git pull UUID=$(uuidgen) git checkout -b "${UUID}" npm version patch git add package.json git commit -m "#; update version script test" git push origin "${UUID}" # 身份验证测试 curl -u ${GITHUB_USER}:${GITHUB_TOKEN} https://github.${GITHUB_ORG}.com/api/v3/user # 创建PR请求,补全认证+修正JSON格式 curl \ -u ${GITHUB_USER}:${GITHUB_TOKEN} \ -X POST \ -H "Accept: application/vnd.github.v3+json" \ https://github.${GITHUB_ORG}.com/api/v3/repos/Modules/${TARGET_REPO}/pulls \ -d "{\"head\":\"${UUID}\",\"base\":\"${TARGET_BASE_BRANCH}\"}"
内容的提问来源于stack exchange,提问作者A.Chao
相关产品推荐
相关产品推荐

