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

C#调用GitHub API创建合并Pull Request返回404问题如何解决?

排查与解决方案

1. 优先修正代码拼写与路径错误

现有代码存在多处明显的语法/路径错误,是触发404的最常见原因:

  • 原生REST API调用错误:创建PR的请求路径缺少/pulls后缀,正确路径格式为repos/{owner}/{repo}/pulls,当前的路径仅到仓库层级,必然返回404。修正示例:
// 修正后的请求路径
RestRequest restRequest = new RestRequest("repos/" + GitHubUserId + "/working-repository/pulls", Method.POST);
  • Octokit调用错误:代码里的仓库名拼写错误,working-reposiory 缺少字母t,正确应为working-repository;如果仓库属于个人账户而非组织,参数不能填Organization,需要替换为实际的仓库所属用户名。
  • 跨仓库PR参数错误:如果工作分支和目标分支不在同一个仓库,head参数需要补充所有者前缀,格式为分支所有者:分支名,例如userA:dev。

2. 检查访问令牌权限

  • 若使用经典PAT,确保已勾选repo完整权限,组织仓库还需要提前给令牌开启组织访问授权。
  • 若使用细粒度PAT,确保已开启对应仓库的Pull requests读写权限、Contents读写权限。
  • 确认令牌未过期、未被IP限制、未被组织管理员禁用。

3. 校验分支与参数合法性

  • 确认head(工作分支)、base(目标分支)均已推送到远程仓库,本地存在不代表远程存在。
  • 确认当前没有处于打开状态的同source、同target的PR,GitHub不允许重复创建指向相同分支对的开放PR。
  • 确认仓库没有开启强制PR审核、分支保护规则限制账号直接创建/合并PR。

4. 合并PR的补充实现

创建PR成功后,可通过Octokit直接调用合并接口完成最后一步,示例代码:

// 合并PR的参数配置
MergePullRequest mergeParams = new MergePullRequest()
{
    MergeMethod = PullRequestMergeMethod.Merge, // 可根据需求改为Squash/Rebase
    CommitMessage = "自动合并定时任务提交的变更"
};
// 执行合并
var mergeResult = await gitHubClient.PullRequest.Merge("仓库所有者", "仓库名", prNumber, mergeParams);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:45:03