Git 数据库 API 使您能够在 GitHub Enterprise 上的 Git 数据库中读取和写入原始 Git 对象,并列出和更新您的引用(分支头部和标记)。 有关使用 Git 数据库 API 的更多信息,请参阅“Git 数据库 API 入门指南”。
Blob
Git Blob(二进制大对象)是用于将每个文件的内容存储在仓库中的对象类型。 文件的 SHA-1 哈希在 Blob 对象中计算和存储。 这些端点允许您在 GitHub Enterprise 上的 Git 数据库中读取和写入 blob 对象。 Blob 使用这些自定义媒体类型。 您可以在此处阅读有关 API 中媒体类型使用情况的更多信息。
Blob 的自定义媒体类型
以下是 blob 支持的媒体类型。
application/json
application/vnd.github.VERSION.raw
更多信息请参阅“媒体类型”。
post /repos/{owner}/{repo}/git/blobs
参数
Name | Type | In | Description |
---|---|---|---|
accept |
string | header |
Setting to |
owner |
string | path | |
repo |
string | path | |
content |
string | body |
Required. The new blob's content. |
encoding |
string | body |
The encoding used for utf-8
|
代码示例
Shell
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/blobs \
-d '{"content":"content"}'
JavaScript (@octokit/core.js)
await octokit.request('POST /repos/{owner}/{repo}/git/blobs', {
owner: 'octocat',
repo: 'hello-world',
content: 'content'
})
Default response
Status: 201 Created
{
"url": "https://api.github.com/repos/octocat/example/git/blobs/3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15",
"sha": "3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15"
}
Notes
Get a blob
The content
in the response will always be Base64 encoded.
Note: This API supports blobs up to 100 megabytes in size.
get /repos/{owner}/{repo}/git/blobs/{file_sha}
参数
Name | Type | In | Description |
---|---|---|---|
accept |
string | header |
Setting to |
owner |
string | path | |
repo |
string | path | |
file_sha |
string | path |
代码示例
Shell
curl \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/blobs/FILE_SHA
JavaScript (@octokit/core.js)
await octokit.request('GET /repos/{owner}/{repo}/git/blobs/{file_sha}', {
owner: 'octocat',
repo: 'hello-world',
file_sha: 'file_sha'
})
Default response
Status: 200 OK
{
"content": "Q29udGVudCBvZiB0aGUgYmxvYg==\n",
"encoding": "base64",
"url": "https://api.github.com/repos/octocat/example/git/blobs/3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15",
"sha": "3a0f86fb8db8eea7ccbb9a95f325ddbedfb25e15",
"size": 19
}
Notes
提交
Git 提交是 Git 仓库中层次结构(Git 树)和文件内容 ( Git blob</1) 的快照。 这些端点允许您在 GitHub Enterprise 上的 Git 数据库中读取和写入提交对象。
Create a commit
Creates a new Git commit object.
In this example, the payload of the signature would be:
Signature verification object
The response will include a verification
object that describes the result of verifying the commit's signature. The following fields are included in the verification
object:
These are the possible values for reason
in the verification
object:
Value | Description |
---|---|
expired_key | The key that made the signature is expired. |
not_signing_key | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
gpgverify_error | There was an error communicating with the signature verification service. |
gpgverify_unavailable | The signature verification service is currently unavailable. |
unsigned | The object does not include a signature. |
unknown_signature_type | A non-PGP signature was found in the commit. |
no_user | No user was associated with the committer email address in the commit. |
unverified_email | The committer email address in the commit was associated with a user, but the email address is not verified on her/his account. |
bad_email | The committer email address in the commit is not included in the identities of the PGP key that made the signature. |
unknown_key | The key that made the signature has not been registered with any user's account. |
malformed_signature | There was an error parsing the signature. |
invalid | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
valid | None of the above errors applied, so the signature is considered to be verified. |
post /repos/{owner}/{repo}/git/commits
参数
Name | Type | In | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
accept |
string | header |
Setting to |
||||||
owner |
string | path | |||||||
repo |
string | path | |||||||
message |
string | body |
Required. The commit message |
||||||
tree |
string | body |
Required. The SHA of the tree object this commit points to |
||||||
parents |
array of strings | body |
Required. The SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided. |
||||||
author |
object | body |
Information about the author of the commit. By default, the |
||||||
author object |
name (string) |
The name of the author (or committer) of the commit |
email (string) |
The email of the author (or committer) of the commit |
date (string) |
Indicates when this commit was authored (or committed). This is a timestamp in ISO 8601 format: |
committer
Information about the person who is making the commit. By default, committer
will use the information set in author
. See the author
and committer
object below for details.
Properties of the committer
object
committer
objectname (string) |
The name of the author (or committer) of the commit |
email (string) |
The email of the author (or committer) of the commit |
date (string) |
Indicates when this commit was authored (or committed). This is a timestamp in ISO 8601 format: |
signature
The PGP signature of the commit. GitHub adds the signature to the gpgsig
header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database. To pass a signature
parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to use the command line to create signed commits.
代码示例
Shell
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/commits \
-d '{"message":"message","tree":"tree","parents":["parents"]}'
JavaScript (@octokit/core.js)
await octokit.request('POST /repos/{owner}/{repo}/git/commits', {
owner: 'octocat',
repo: 'hello-world',
message: 'message',
tree: 'tree',
parents: [
'parents'
]
})
Default response
Status: 201 Created
{
"sha": "7638417db6d59f3c431d3e1f261cc637155684cd",
"node_id": "MDY6Q29tbWl0NzYzODQxN2RiNmQ1OWYzYzQzMWQzZTFmMjYxY2M2MzcxNTU2ODRjZA==",
"url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd",
"author": {
"date": "2014-11-07T22:01:45Z",
"name": "Monalisa Octocat",
"email": "octocat@github.com"
},
"committer": {
"date": "2014-11-07T22:01:45Z",
"name": "Monalisa Octocat",
"email": "octocat@github.com"
},
"message": "my commit message",
"tree": {
"url": "https://api.github.com/repos/octocat/Hello-World/git/trees/827efc6d56897b048c772eb4087f854f46256132",
"sha": "827efc6d56897b048c772eb4087f854f46256132"
},
"parents": [
{
"url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7d1b31e74ee336d15cbd21741bc88a537ed063a0",
"sha": "7d1b31e74ee336d15cbd21741bc88a537ed063a0"
}
],
"verification": {
"verified": false,
"reason": "unsigned",
"signature": null,
"payload": null
}
}
Notes
Get a commit
Gets a Git commit object.
Signature verification object
The response will include a verification
object that describes the result of verifying the commit's signature. The following fields are included in the verification
object:
These are the possible values for reason
in the verification
object:
Value | Description |
---|---|
expired_key | The key that made the signature is expired. |
not_signing_key | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
gpgverify_error | There was an error communicating with the signature verification service. |
gpgverify_unavailable | The signature verification service is currently unavailable. |
unsigned | The object does not include a signature. |
unknown_signature_type | A non-PGP signature was found in the commit. |
no_user | No user was associated with the committer email address in the commit. |
unverified_email | The committer email address in the commit was associated with a user, but the email address is not verified on her/his account. |
bad_email | The committer email address in the commit is not included in the identities of the PGP key that made the signature. |
unknown_key | The key that made the signature has not been registered with any user's account. |
malformed_signature | There was an error parsing the signature. |
invalid | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
valid | None of the above errors applied, so the signature is considered to be verified. |
get /repos/{owner}/{repo}/git/commits/{commit_sha}
参数
Name | Type | In | Description |
---|---|---|---|
accept |
string | header |
Setting to |
owner |
string | path | |
repo |
string | path | |
commit_sha |
string | path |
代码示例
Shell
curl \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/commits/COMMIT_SHA
JavaScript (@octokit/core.js)
await octokit.request('GET /repos/{owner}/{repo}/git/commits/{commit_sha}', {
owner: 'octocat',
repo: 'hello-world',
commit_sha: 'commit_sha'
})
Default response
Status: 200 OK
{
"sha": "7638417db6d59f3c431d3e1f261cc637155684cd",
"node_id": "MDY6Q29tbWl0NmRjYjA5YjViNTc4NzVmMzM0ZjYxYWViZWQ2OTVlMmU0MTkzZGI1ZQ==",
"url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7638417db6d59f3c431d3e1f261cc637155684cd",
"author": {
"date": "2014-11-07T22:01:45Z",
"name": "Monalisa Octocat",
"email": "octocat@github.com"
},
"committer": {
"date": "2014-11-07T22:01:45Z",
"name": "Monalisa Octocat",
"email": "octocat@github.com"
},
"message": "added readme, because im a good github citizen",
"tree": {
"url": "https://api.github.com/repos/octocat/Hello-World/git/trees/691272480426f78a0138979dd3ce63b77f706feb",
"sha": "691272480426f78a0138979dd3ce63b77f706feb"
},
"parents": [
{
"url": "https://api.github.com/repos/octocat/Hello-World/git/commits/1acc419d4d6a9ce985db7be48c6349a0475975b5",
"sha": "1acc419d4d6a9ce985db7be48c6349a0475975b5"
}
],
"verification": {
"verified": false,
"reason": "unsigned",
"signature": null,
"payload": null
}
}
Notes
引用
Git 引用 (git ref
) 只是一个包含 Git 提交 SHA-1 哈希的文件。 当引用 Git 提交时,您可以使用 Git 引用,这是一个易于记住的名称,而不是哈希。 可以重写 Git 引用指向新的提交。 分支只是存储新 Git 提交哈希的 Git 引用。 这些端点允许您在 GitHub Enterprise 上的 Git 数据库中读取和写入引用。
Create a reference
Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches.
post /repos/{owner}/{repo}/git/refs
参数
Name | Type | In | Description |
---|---|---|---|
accept |
string | header |
Setting to |
owner |
string | path | |
repo |
string | path | |
ref |
string | body |
Required. The name of the fully qualified reference (ie: |
sha |
string | body |
Required. The SHA1 value for this reference. |
代码示例
Shell
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/refs \
-d '{"ref":"ref","sha":"sha"}'
JavaScript (@octokit/core.js)
await octokit.request('POST /repos/{owner}/{repo}/git/refs', {
owner: 'octocat',
repo: 'hello-world',
ref: 'ref',
sha: 'sha'
})
Default response
Status: 201 Created
{
"ref": "refs/heads/featureA",
"node_id": "MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlQQ==",
"url": "https://api.github.com/repos/octocat/Hello-World/git/refs/heads/featureA",
"object": {
"type": "commit",
"sha": "aa218f56b14c9653891f9e74264a383fa43fefbd",
"url": "https://api.github.com/repos/octocat/Hello-World/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd"
}
}
Notes
Get all references
Returns an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just heads
and tags
. If there are no references to list, a 404
is returned.
Note: You need to explicitly request a pull request to trigger a merge commit creation. For more information, see "Checking mergeability of pull requests".
GET /repos/octocat/Hello-World/git/refs
You can also request a sub-namespace. For example, to get all the tag references, you can call:
GET /repos/octocat/Hello-World/git/refs/tags
get /repos/{owner}/{repo}/git/refs/{namespace}
参数
Name | Type | In | Description |
---|---|---|---|
accept |
string | header |
Setting to |
owner |
string | path |
owner parameter |
repo |
string | path |
repo parameter |
per_page |
integer | query |
Results per page (max 100) |
page |
integer | query |
Page number of the results to fetch. |
代码示例
Shell
curl \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/refs/
JavaScript (@octokit/core.js)
await octokit.request('GET /repos/{owner}/{repo}/git/refs/{namespace}', {
owner: 'octocat',
repo: 'hello-world'
})
Response
Status: 200 OK
Notes
Get a reference
Returns a branch or tag reference. Other than the REST API it always returns a single reference. If the REST API returns with an array then the method responds with an error.
get /repos/{owner}/{repo}/git/refs/{ref}
参数
Name | Type | In | Description |
---|---|---|---|
accept |
string | header |
Setting to |
owner |
string | path |
owner parameter |
repo |
string | path |
repo parameter |
ref |
string | path |
Must be formatted as |
代码示例
Shell
curl \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/refs/REF
JavaScript (@octokit/core.js)
await octokit.request('GET /repos/{owner}/{repo}/git/refs/{ref}', {
owner: 'octocat',
repo: 'hello-world',
ref: 'ref'
})
Response
Status: 200 OK
Notes
patch /repos/{owner}/{repo}/git/refs/{ref}
参数
Name | Type | In | Description |
---|---|---|---|
accept |
string | header |
Setting to |
owner |
string | path | |
repo |
string | path | |
ref |
string | path | |
sha |
string | body |
Required. The SHA1 value to set this reference to |
force |
boolean | body |
Indicates whether to force the update or to make sure the update is a fast-forward update. Leaving this out or setting it to |
代码示例
Shell
curl \
-X PATCH \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/refs/REF \
-d '{"sha":"sha"}'
JavaScript (@octokit/core.js)
await octokit.request('PATCH /repos/{owner}/{repo}/git/refs/{ref}', {
owner: 'octocat',
repo: 'hello-world',
ref: 'ref',
sha: 'sha'
})
Default response
Status: 200 OK
{
"ref": "refs/heads/featureA",
"node_id": "MDM6UmVmcmVmcy9oZWFkcy9mZWF0dXJlQQ==",
"url": "https://api.github.com/repos/octocat/Hello-World/git/refs/heads/featureA",
"object": {
"type": "commit",
"sha": "aa218f56b14c9653891f9e74264a383fa43fefbd",
"url": "https://api.github.com/repos/octocat/Hello-World/git/commits/aa218f56b14c9653891f9e74264a383fa43fefbd"
}
}
Notes
delete /repos/{owner}/{repo}/git/refs/{ref}
参数
Name | Type | In | Description |
---|---|---|---|
accept |
string | header |
Setting to |
owner |
string | path | |
repo |
string | path | |
ref |
string | path |
代码示例
Shell
curl \
-X DELETE \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/refs/REF
JavaScript (@octokit/core.js)
await octokit.request('DELETE /repos/{owner}/{repo}/git/refs/{ref}', {
owner: 'octocat',
repo: 'hello-world',
ref: 'ref'
})
Default Response
Status: 204 No Content
Notes
标记
Git 标记类似于 Git 引用,但它指向的 Git 提交永远不变。 当您想要指向特定发行版时,Git 标记非常有用。 这些端点允许您在 GitHub Enterprise 上的 Git 数据库中读取和写入标记对象。 Git 标记 API 只支持标注的标记对象,而不支持轻量级标记。
Create a tag object
Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then create the refs/tags/[tag]
reference. If you want to create a lightweight tag, you only have to create the tag reference - this call would be unnecessary.
Signature verification object
The response will include a verification
object that describes the result of verifying the commit's signature. The following fields are included in the verification
object:
These are the possible values for reason
in the verification
object:
Value | Description |
---|---|
expired_key | The key that made the signature is expired. |
not_signing_key | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
gpgverify_error | There was an error communicating with the signature verification service. |
gpgverify_unavailable | The signature verification service is currently unavailable. |
unsigned | The object does not include a signature. |
unknown_signature_type | A non-PGP signature was found in the commit. |
no_user | No user was associated with the committer email address in the commit. |
unverified_email | The committer email address in the commit was associated with a user, but the email address is not verified on her/his account. |
bad_email | The committer email address in the commit is not included in the identities of the PGP key that made the signature. |
unknown_key | The key that made the signature has not been registered with any user's account. |
malformed_signature | There was an error parsing the signature. |
invalid | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
valid | None of the above errors applied, so the signature is considered to be verified. |
post /repos/{owner}/{repo}/git/tags
参数
Name | Type | In | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
accept |
string | header |
Setting to |
||||||
owner |
string | path | |||||||
repo |
string | path | |||||||
tag |
string | body |
Required. The tag's name. This is typically a version (e.g., "v0.0.1"). |
||||||
message |
string | body |
Required. The tag message. |
||||||
object |
string | body |
Required. The SHA of the git object this is tagging. |
||||||
type |
string | body |
Required. The type of the object we're tagging. Normally this is a |
||||||
tagger |
object | body |
An object with information about the individual creating the tag. |
||||||
tagger object |
name (string) |
The name of the author of the tag |
email (string) |
The email of the author of the tag |
date (string) |
When this object was tagged. This is a timestamp in ISO 8601 format: |
代码示例
Shell
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/tags \
-d '{"tag":"tag","message":"message","object":"object","type":"type"}'
JavaScript (@octokit/core.js)
await octokit.request('POST /repos/{owner}/{repo}/git/tags', {
owner: 'octocat',
repo: 'hello-world',
tag: 'tag',
message: 'message',
object: 'object',
type: 'type'
})
Default response
Status: 201 Created
{
"node_id": "MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw==",
"tag": "v0.0.1",
"sha": "940bd336248efae0f9ee5bc7b2d5c985887b16ac",
"url": "https://api.github.com/repos/octocat/Hello-World/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac",
"message": "initial version",
"tagger": {
"name": "Monalisa Octocat",
"email": "octocat@github.com",
"date": "2014-11-07T22:01:45Z"
},
"object": {
"type": "commit",
"sha": "c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c",
"url": "https://api.github.com/repos/octocat/Hello-World/git/commits/c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c"
},
"verification": {
"verified": false,
"reason": "unsigned",
"signature": null,
"payload": null
}
}
Notes
Get a tag
Signature verification object
The response will include a verification
object that describes the result of verifying the commit's signature. The following fields are included in the verification
object:
These are the possible values for reason
in the verification
object:
Value | Description |
---|---|
expired_key | The key that made the signature is expired. |
not_signing_key | The "signing" flag is not among the usage flags in the GPG key that made the signature. |
gpgverify_error | There was an error communicating with the signature verification service. |
gpgverify_unavailable | The signature verification service is currently unavailable. |
unsigned | The object does not include a signature. |
unknown_signature_type | A non-PGP signature was found in the commit. |
no_user | No user was associated with the committer email address in the commit. |
unverified_email | The committer email address in the commit was associated with a user, but the email address is not verified on her/his account. |
bad_email | The committer email address in the commit is not included in the identities of the PGP key that made the signature. |
unknown_key | The key that made the signature has not been registered with any user's account. |
malformed_signature | There was an error parsing the signature. |
invalid | The signature could not be cryptographically verified using the key whose key-id was found in the signature. |
valid | None of the above errors applied, so the signature is considered to be verified. |
get /repos/{owner}/{repo}/git/tags/{tag_sha}
参数
Name | Type | In | Description |
---|---|---|---|
accept |
string | header |
Setting to |
owner |
string | path | |
repo |
string | path | |
tag_sha |
string | path |
代码示例
Shell
curl \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/tags/TAG_SHA
JavaScript (@octokit/core.js)
await octokit.request('GET /repos/{owner}/{repo}/git/tags/{tag_sha}', {
owner: 'octocat',
repo: 'hello-world',
tag_sha: 'tag_sha'
})
Default response
Status: 200 OK
{
"node_id": "MDM6VGFnOTQwYmQzMzYyNDhlZmFlMGY5ZWU1YmM3YjJkNWM5ODU4ODdiMTZhYw==",
"tag": "v0.0.1",
"sha": "940bd336248efae0f9ee5bc7b2d5c985887b16ac",
"url": "https://api.github.com/repos/octocat/Hello-World/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac",
"message": "initial version",
"tagger": {
"name": "Monalisa Octocat",
"email": "octocat@github.com",
"date": "2014-11-07T22:01:45Z"
},
"object": {
"type": "commit",
"sha": "c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c",
"url": "https://api.github.com/repos/octocat/Hello-World/git/commits/c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c"
},
"verification": {
"verified": false,
"reason": "unsigned",
"signature": null,
"payload": null
}
}
Notes
树
Git 树对象在 Git 仓库中的文件之间创建层次结构。 您可以使用 Git 树对象创建目录与其包含的文件之间的关系。 这些端点允许您在 GitHub Enterprise 上的 Git 数据库中读取和写入树对象。
Create a tree
The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure.
If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "Create a commit" and "Update a reference."
post /repos/{owner}/{repo}/git/trees
参数
Name | Type | In | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
accept |
string | header |
Setting to |
||||||||||
owner |
string | path | |||||||||||
repo |
string | path | |||||||||||
tree |
array of objects | body |
Required. Objects (of |
||||||||||
tree items |
path (string) |
The file referenced in the tree. |
mode (string) |
The file mode; one of |
type (string) |
Either |
sha (string or null) |
The SHA1 checksum ID of the object in the tree. Also called Note: Use either |
content (string) |
The content you want this file to have. GitHub will write this blob out and use that SHA for this entry. Use either this, or Note: Use either |
base_tree
The SHA1 of the tree you want to update with new data. If you don't set this, the commit will be created on top of everything; however, it will only contain your change, the rest of your files will show up as deleted.
代码示例
Shell
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/trees \
-d '{"tree":[{"path":"path","mode":"mode","type":"type","sha":"sha","content":"content"}]}'
JavaScript (@octokit/core.js)
await octokit.request('POST /repos/{owner}/{repo}/git/trees', {
owner: 'octocat',
repo: 'hello-world',
tree: [
{
path: 'path',
mode: 'mode',
type: 'type',
sha: 'sha',
content: 'content'
}
]
})
Default response
Status: 201 Created
{
"sha": "cd8274d15fa3ae2ab983129fb037999f264ba9a7",
"url": "https://api.github.com/repos/octocat/Hello-World/trees/cd8274d15fa3ae2ab983129fb037999f264ba9a7",
"tree": [
{
"path": "file.rb",
"mode": "100644",
"type": "blob",
"size": 132,
"sha": "7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b",
"url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b"
}
]
}
Notes
Get a tree
Returns a single tree using the SHA1 value for that tree.
If truncated
is true
in the response then the number of items in the tree
array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time.
get /repos/{owner}/{repo}/git/trees/{tree_sha}
参数
Name | Type | In | Description |
---|---|---|---|
accept |
string | header |
Setting to |
owner |
string | path | |
repo |
string | path | |
tree_sha |
string | path | |
recursive |
string | query |
Setting this parameter to any value returns the objects or subtrees referenced by the tree specified in |
代码示例
Shell
curl \
-H "Accept: application/vnd.github.v3+json" \
https://{hostname}/repos/octocat/hello-world/git/trees/TREE_SHA
JavaScript (@octokit/core.js)
await octokit.request('GET /repos/{owner}/{repo}/git/trees/{tree_sha}', {
owner: 'octocat',
repo: 'hello-world',
tree_sha: 'tree_sha'
})
Default response
Status: 200 OK
{
"sha": "9fb037999f264ba9a7fc6274d15fa3ae2ab98312",
"url": "https://api.github.com/repos/octocat/Hello-World/trees/9fb037999f264ba9a7fc6274d15fa3ae2ab98312",
"tree": [
{
"path": "file.rb",
"mode": "100644",
"type": "blob",
"size": 30,
"sha": "44b4fc6d56897b048c772eb4087f854f46256132",
"url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132"
},
{
"path": "subdir",
"mode": "040000",
"type": "tree",
"sha": "f484d249c660418515fb01c2b9662073663c242e",
"url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/f484d249c660418515fb01c2b9662073663c242e"
},
{
"path": "exec_file",
"mode": "100755",
"type": "blob",
"size": 75,
"sha": "45b983be36b73c0788dc9cbcb76cbb80fc7bb057",
"url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/45b983be36b73c0788dc9cbcb76cbb80fc7bb057"
}
],
"truncated": false
}
Response recursively retrieving a tree
Status: 200 OK
{
"sha": "fc6274d15fa3ae2ab983129fb037999f264ba9a7",
"url": "https://api.github.com/repos/octocat/Hello-World/trees/fc6274d15fa3ae2ab983129fb037999f264ba9a7",
"tree": [
{
"path": "subdir/file.txt",
"mode": "100644",
"type": "blob",
"size": 132,
"sha": "7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b",
"url": "https://api.github.com/repos/octocat/Hello-World/git/7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b"
}
],
"truncated": false
}