yet*_*ety 5 api json http commit github
我需要 Github API 方面的帮助,
我需要通过 api 提交新版本的文件,我试图通过向
https://api.github.com/repos/:username/:repo:/git/commits/
Run Code Online (Sandbox Code Playgroud)
有数据
{
"login": "username",
"token": "auth_token",
"parent_commit": "sha",
"message": "commit message.",
"content": {
"path": "full/path",
"mode": "edit",
"data": "new content"
}
}
Run Code Online (Sandbox Code Playgroud)
但结果失败 - 未找到。
有没有人知道在哪里发送这个请求以及这种格式是否正确?
(格式的灵感来自 - http://swanson.github.com/blog/2011/07/23/digging-around-the-github-api-take-2.html)
谢谢!
请注意,自 2013 年 5 月起,您可以使用 CRUD API:
其中包括文件更新 API
{
"message": "my commit message",
"committer": {
"name": "Scott Chacon",
"email": "schacon@gmail.com"
},
"content": "bXkgdXBkYXRlZCBmaWxlIGNvbnRlbnRz",
"sha": "329688480d39049927147c162b9d2deaf885005f"
}
Run Code Online (Sandbox Code Playgroud)
(内容是更新后的文件内容,Base64 编码。)
\n\n提交新内容实际上是一个多步骤的过程,需要使用低级且强大的 API
\n
实际上,从 2021 年 9 月(9 年后)开始,就不是了,而是使用 GraphQL GitHub API v4(而不是GitHub API v3)
\n看:
\n\n\n用于创作提交的更简单的 API:
\n新的 GraphQL 突变
\ncreateCommitOnBranch使得在存储库分支中添加、更新和删除文件变得更加容易。与现有的Git 数据库 REST API相比,这个新 API 提供了一种更简单的提交更改的方法。
\n
\n使用新的createCommitOnBranch突变,您无需在创建提交之前手动创建 blob 和树。这允许您在单个 API 调用中添加、更新或删除多个文件。使用新 API 编写的提交会自动进行 GPG 签名,并在 GitHub UI 中标记为已验证。GitHub 应用程序可以使用突变直接或代表用户创作提交。
\n
$ curl https://api.github.com/graphql \\ \n -s -H "Authorization: bearer $TOKEN"\n --data @- <<GRAPHQL | jq \\\n \'.data.createCommitOnBranch.commit.url[0:56]\'\n{\n "query": "mutation (\\$input: CreateCommitOnBranchInput!) {\n createCommitOnBranch(input: \\$input) { commit { url } } }",\n\n "variables": {\n "input": {\n "branch": {\n "repositoryNameWithOwner": "demo-githubs/test",\n "branchName": "main"\n },\n "message": {"headline": "Hello from GraphQL!" },\n "fileChanges": {\n "additions": [{\n "path": "GraphQL.md",\n "contents": "`echo \'Hello, GraphQL! | base64`"\n }],\n "deletions": [{ "path": "REST.txt" }]\n },\n "expectedHeadOid": "git rev-parse HEAD"\n}}}\nGRAPHQL\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n我可以使用 api 设置提交者吗?
\n
是的,您应该能够在 GitHub 操作中将机器人设置为提交者,但不能使用 API。
\n正如评论中的\xe6\xb2\x99\xe6\xbc\xa0\xe4\xb9\x8b\xe5\xad\x90 所指出的:
\n\n\n目前,API v4
\nCreateCommitOnBranch明确不支持设置提交者。
\nAPI v3 创建带有签名的提交,并且必须设置私钥。
\n请参阅“通过 API 创建签名提交”。
没有API:
\n当您使用 GitHub 操作提交文件时,默认提交者是 GitHub Actions 机器人。git但是,您可以通过在提交之前设置用户和电子邮件来自定义提交者。
在您的 GitHub 操作工作流程文件(例如)中,您可以在提交之前.github/workflows/main.yml配置用户和电子邮件。git
name: Committer Action\n\non:\n push:\n branches:\n - main\n\njobs:\n build:\n runs-on: ubuntu-latest\n\n steps:\n - name: Checkout code\n uses: actions/checkout@v2\n\n - name: Configure git\n run: |\n git config user.name "Your Bot Name"\n git config user.email "bot@example.com"\n\n - name: Make a commit\n run: |\n echo "New Content" > file.txt\n git add file.txt\n git commit -m "Commit by bot"\n git push\nRun Code Online (Sandbox Code Playgroud)\n这样,机器人将被视为通过此操作推动的任何更改的提交者。
\n| 归档时间: |
|
| 查看次数: |
3730 次 |
| 最近记录: |