【问题标题】:How to create a github pull request using the github API?如何使用 github API 创建 github 拉取请求?
【发布时间】:2021-05-27 05:42:55
【问题描述】:

我已将 repo 的一些更改推送到 github 上的新分支 copyright_updater。更改在 github 上。

现在我想创建一个拉取请求。我一直在查看API documentation 并想出了以下命令来创建拉取请求:

curl \
  -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  "https://api.github.com/repos/alex4200/hello-world/pulls" \
  -d '{"head":"copyright_updater","base":"master"}' 

但是,这会返回输出

{
  "message": "Not Found",
  "documentation_url": "https://docs.github.com/rest/reference/pulls#create-a-pull-request"
}

那么这次我错过了什么?

附:它看起来不是授权问题。即使使用令牌,我也会得到相同的回复。

【问题讨论】:

  • 如果你真的想重新发明这个轮子,我可以推荐 Postman 吗?
  • 那只是为了测试!最后,我将为此使用 python。但它必须首先工作,但它没有。
  • Postman 将测试然后为你编写 curl 或 python 或其他任何东西。
  • 我正在使用文档中的示例。文档中记录的示例应该可以工作。为什么它不工作?缺少什么?

标签: git github


【解决方案1】:

看不出来是不是授权问题。

也许不是,但由于您的代码显示 no 授权,我不希望它做任何事情。我能够让它正常工作,就像这样:

curl --location --request POST 'https://api.github.com/repos/mattneub/temp/pulls' \
--header 'Authorization: Bearer 55...42' \
--header 'Content-Type: application/json' \
--data-raw '{
    "base":"main",
    "head":"what",
    "title":"Fun"
}'

显然标题是必需的,即使文档没有这样说。

【讨论】:

  • 原来我使用了错误的 github 令牌。我使用的令牌是 github 令牌,但用于不同的项目。所以这里的实际错误是消息“未找到”,这是不正确的。我将使用 github 创建一个错误报告
  • 总的来说,我的经验是,当程序员说无论问题如何,肯定不是 X,可能是 X。不过,我的回答是正确的;直到我添加了标题,推送才成功,所以这是 API 文档中的一个错误。
  • 啊,所以可能是缺少标题。那可能是。谢谢(你的)信息。但是,我在使用 python 执行完全相同的 github api 请求时遇到了不同的错误。
  • @Alex 我完全同意你的观点,这条信息是错误的!你是怎么解决的?我正在使用具有完全权限的 GitHub 个人访问令牌,但仍未找到。
  • @JoabeLucena 我不确定我是否解决了 curl 的问题,因为我现在正在使用 python 成功使用 API 访问。看来,我使用了错误的令牌。我会三次检查您是否使用具有正确访问权限的正确令牌
【解决方案2】:

您将 URL 放在 "" 中,但文档中没有。试试:

curl \
  -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/alex4200/hello-world/pulls \
  -d '{"head":"copyright_updater","base":"master"}' 

【讨论】:

  • 没关系。我得到相同的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-22
  • 1970-01-01
  • 2012-09-20
相关资源
最近更新 更多