7

我需要有关 Github API 的帮助,

我需要通过 api 提交新版本的文件,我试图通过发送 post 请求来实现这一点

https://api.github.com/repos/:username/:repo:/git/commits/

有数据

{
    "login": "username",
    "token": "auth_token",
    "parent_commit": "sha",
    "message": "commit message.",
    "content": {
        "path": "full/path",
        "mode": "edit",
        "data": "new content"
    }
}

但结果失败 - 未找到。

有谁知道在哪里发送这个请求以及这种格式是否正确?

(格式的灵感来自 - http://swanson.github.com/blog/2011/07/23/digging-around-the-github-api-take-2.html

谢谢!

4

3 回答 3

4

请注意,自 2013 年 5 月以来,您有一个可用的 CRUD API

这包括一个文件更新 API

{
  "message": "my commit message",
  "committer": {
    "name": "Scott Chacon",
    "email": "schacon@gmail.com"
  },
  "content": "bXkgdXBkYXRlZCBmaWxlIGNvbnRlbnRz",
  "sha": "329688480d39049927147c162b9d2deaf885005f"
}

(内容为更新后的文件内容,Base64 编码。)

于 2013-05-07T06:15:29.257 回答
4

这个我也很疑惑!

提交新内容实际上是一个多步骤的过程,使用它们的低级和强大的 API。

这是我分享一个解决方案的要点。请注意,有些东西是硬编码的,例如分支名称“master”。

请随时分叉和改进要点,或者如果您在运行此程序时遇到问题,请告诉我。

于 2012-07-18T10:01:57.547 回答
2

提交新内容实际上是一个多步骤的过程,使用它们的低级和强大的 API

实际上,从 2021 年 9 月(9 年后)开始,它不是,而是使用 GraphQL GitHub API v4(而不是GitHub API v3

看:

用于创作提交的更简单的 API

新的 GraphQL 突变createCommitOnBranch使在存储库的分支中添加、更新和删除文件变得更加容易。

与现有的Git 数据库 REST API相比,这个新的 API 提供了一种更简单的方式来提交更改。
使用新的createCommitOnBranch突变,您无需在创建提交之前手动创建 blob 和树。这允许您在单个 API 调用中添加、更新或删除多个文件。

使用新 API 编写的提交会自动进行 GPG 签名,并在 GitHub UI中标记为已验证。GitHub 应用程序可以使用突变直接或代表用户创作提交。

$ curl https://api.github.com/graphql \ 
       -s -H "Authorization: bearer $TOKEN"
       --data @- <<GRAPHQL | jq \
         '.data.createCommitOnBranch.commit.url[0:56]'
{
  "query": "mutation (\$input: CreateCommitOnBranchInput!) {
    createCommitOnBranch(input: \$input) { commit { url } } }",

  "variables": {
    "input": {
      "branch": {
        "repositoryNameWithOwner": "demo-githubs/test",
        "branchName": "main"
      },
      "message": {"headline": "Hello from GraphQL!" },
      "fileChanges": {
        "additions": [{
            "path": "GraphQL.md",
            "contents": "`echo 'Hello, GraphQL! | base64`"
        }],
        "deletions": [{ "path": "REST.txt" }]
      },
      "expectedHeadOid": "git rev-parse HEAD"
}}}

图形

于 2021-09-22T20:16:22.837 回答