Skip to main content

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](https://docs.github.com/[email protected]/rest/reference/git#create-a-commit)" and "[Update a reference](https://docs.github.com/[email protected]/rest/reference/git#update-a-reference)."

POST/repos/{owner}/{repo}/git/trees
Source
github-v3-rest.json
Revision
f5f067c1e6f6
Active snapshot
85e53e3d0d65

Request

Path Parameters
owner string
required
repo string
required
Body Params
required
application/jsonobject
base_tree string
optional

The SHA1 of an existing Git tree object which will be used as the base for the new tree. If provided, a new Git tree object will be created from entries in the Git tree object pointed to by `base_tree` and entries defined in the `tree` parameter. Entries defined in the `tree` parameter will overwrite items from `base_tree` with the same `path`. If you're creating new changes on a branch, then normally you'd set `base_tree` to the SHA1 of the Git tree object of the current latest commit on the branch you're working on. If not provided, GitHub will create a new Git tree object from only the entries defined in the `tree` parameter. If you create a new commit pointing to such a tree, then all files which were a part of the parent commit's tree and were not defined in the `tree` parameter will be listed as deleted by the new commit.

tree array[object]
required

Objects (of `path`, `mode`, `type`, and `sha`) specifying a tree structure.

items object
content string
optional

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 `tree.sha`. **Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error.

mode string
optional

The file mode; one of `100644` for file (blob), `100755` for executable (blob), `040000` for subdirectory (tree), `160000` for submodule (commit), or `120000` for a blob that specifies the path of a symlink.

path string
optional

The file referenced in the tree.

sha string
optionalnullable

The SHA1 checksum ID of the object in the tree. Also called `tree.sha`. If the value is `null` then the file will be deleted. **Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error.

type string
optional

Either `blob`, `tree`, or `commit`.

Responses

application/json Git Tree object

Response

Headers
Location string

Example: https://api.github.com/repos/octocat/Hello-World/trees/cd8274d15fa3ae2ab983129fb037999f264ba9a7

sha string
required
tree array[object]
required

Objects specifying a tree structure

Example:
[
  {
    "mode": "100644",
    "path": "file.rb",
    "properties": {
      "mode": {
        "type": "string"
      },
      "path": {
        "type": "string"
      },
      "sha": {
        "type": "string"
      },
      "size": {
        "type": "integer"
      },
      "type": {
        "type": "string"
      },
      "url": {
        "type": "string"
      }
    },
    "required": [
      "path",
      "mode",
      "type",
      "sha",
      "url",
      "size"
    ],
    "sha": "44b4fc6d56897b048c772eb4087f854f46256132",
    "size": 30,
    "type": "blob",
    "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132"
  }
]
items object
mode string
optional

Example: 040000

path string
optional

Example: test/file.rb

sha string
optional

Example: 23f6827669e43831def8a7ad935069c8bd418261

size integer
optional

Example: 12

type string
optional

Example: tree

url string
optional
Example:
https://api.github.com/repos/owner-482f3203ecf01f67e9deb18e/BBB_Private_Repo/git/blobs/23f6827669e43831def8a7ad935069c8bd418261
truncated boolean
required
url string<uri>
required
application/json Basic Error object

Forbidden

documentation_url string
optional
message string
optional
status string
optional
url string
optional
application/json Basic Error object

Resource not found

documentation_url string
optional
message string
optional
status string
optional
url string
optional
application/json Validation Error object

Validation failed

documentation_url string
required
errors array[object]
optional
items object
code string
required
field string
optional
index integer
optional
message string
optional
resource string
optional
value
optional
message string
required