8.5 KiB
		
	
	
	
	
	
			
		
		
	
	| stage | group | info | description | title | 
|---|---|---|---|---|
| Create | Source Code | To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments | Documentation for the REST API for Git branches in GitLab. | Branches API | 
{{< details >}}
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
{{< /details >}}
This API operates on repository branches.
See also Protected branches API.
List repository branches
Get a list of repository branches from a project, sorted by name alphabetically.
{{< alert type="note" >}}
This endpoint can be accessed without authentication if the repository is publicly accessible.
{{< /alert >}}
GET /projects/:id/repository/branches
Parameters:
| Attribute | Type | Required | Description | 
|---|---|---|---|
| id | integer or string | yes | ID or URL-encoded path of the project. | 
| search | string | no | Return list of branches containing the search string. Use ^termto find branches that begin withterm, andterm$to find branches that end withterm. | 
| regex | string | no | Return list of branches with names matching a re2 regular expression. | 
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/repository/branches"
Example response:
[
  {
    "name": "main",
    "merged": false,
    "protected": true,
    "default": true,
    "developers_can_push": false,
    "developers_can_merge": false,
    "can_push": true,
    "web_url": "https://gitlab.example.com/my-group/my-project/-/tree/main",
    "commit": {
      "id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
      "short_id": "7b5c3cc",
      "created_at": "2024-06-28T03:44:20-07:00",
      "parent_ids": [
        "4ad91d3c1144c406e50c7b33bae684bd6837faf8"
      ],
      "title": "add projects API",
      "message": "add projects API",
      "author_name": "John Smith",
      "author_email": "john@example.com",
      "authored_date": "2024-06-27T05:51:39-07:00",
      "committer_name": "John Smith",
      "committer_email": "john@example.com",
      "committed_date": "2024-06-28T03:44:20-07:00",
      "trailers": {},
      "extended_trailers": {},
      "web_url": "https://gitlab.example.com/my-group/my-project/-/commit/7b5c3cc8be40ee161ae89a06bba6229da1032a0c"
    }
  },
  ...
]
Get single repository branch
Get a single project repository branch.
{{< alert type="note" >}}
This endpoint can be accessed without authentication if the repository is publicly accessible.
{{< /alert >}}
GET /projects/:id/repository/branches/:branch
Parameters:
| Attribute | Type | Required | Description | 
|---|---|---|---|
| id | integer or string | yes | ID or URL-encoded path of the project. | 
| branch | string | yes | URL-encoded name of the branch. | 
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/repository/branches/main"
Example response:
{
  "name": "main",
  "merged": false,
  "protected": true,
  "default": true,
  "developers_can_push": false,
  "developers_can_merge": false,
  "can_push": true,
  "web_url": "https://gitlab.example.com/my-group/my-project/-/tree/main",
  "commit": {
    "id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
    "short_id": "7b5c3cc",
    "created_at": "2012-06-28T03:44:20-07:00",
    "parent_ids": [
      "4ad91d3c1144c406e50c7b33bae684bd6837faf8"
    ],
    "title": "add projects API",
    "message": "add projects API",
    "author_name": "John Smith",
    "author_email": "john@example.com",
    "authored_date": "2012-06-27T05:51:39-07:00",
    "committer_name": "John Smith",
    "committer_email": "john@example.com",
    "committed_date": "2012-06-28T03:44:20-07:00",
    "trailers": {},
    "web_url": "https://gitlab.example.com/my-group/my-project/-/commit/7b5c3cc8be40ee161ae89a06bba6229da1032a0c"
  }
}
Protect repository branch
See POST /projects/:id/protected_branches for
information on protecting repository branches.
Unprotect repository branch
See DELETE /projects/:id/protected_branches/:name
for information on unprotecting repository branches.
Create repository branch
Create a new branch in the repository.
POST /projects/:id/repository/branches
Parameters:
| Attribute | Type | Required | Description | 
|---|---|---|---|
| id | integer | yes | ID or URL-encoded path of the project. | 
| branch | string | yes | Name of the branch. | 
| ref | string | yes | Branch name or commit SHA to create branch from. | 
Example request:
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/repository/branches?branch=newbranch&ref=main"
Example response:
{
  "commit": {
    "id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
    "short_id": "7b5c3cc",
    "created_at": "2012-06-28T03:44:20-07:00",
    "parent_ids": [
      "4ad91d3c1144c406e50c7b33bae684bd6837faf8"
    ],
    "title": "add projects API",
    "message": "add projects API",
    "author_name": "John Smith",
    "author_email": "john@example.com",
    "authored_date": "2012-06-27T05:51:39-07:00",
    "committer_name": "John Smith",
    "committer_email": "john@example.com",
    "committed_date": "2012-06-28T03:44:20-07:00",
    "trailers": {},
    "web_url": "https://gitlab.example.com/my-group/my-project/-/commit/7b5c3cc8be40ee161ae89a06bba6229da1032a0c"
  },
  "name": "newbranch",
  "merged": false,
  "protected": false,
  "default": false,
  "developers_can_push": false,
  "developers_can_merge": false,
  "can_push": true,
  "web_url": "https://gitlab.example.com/my-group/my-project/-/tree/newbranch"
}
Delete repository branch
Delete a branch from the repository.
{{< alert type="note" >}}
In the case of an error, an explanation message is provided.
{{< /alert >}}
DELETE /projects/:id/repository/branches/:branch
Parameters:
| Attribute | Type | Required | Description | 
|---|---|---|---|
| id | integer/string | yes | ID or URL-encoded path of the project. | 
| branch | string | yes | Name of the branch. | 
Example request:
curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/repository/branches/newbranch"
{{< alert type="note" >}}
Deleting a branch does not completely erase all related data. Some information persists to maintain project history and to support recovery processes. For more information, see Handle sensitive information.
{{< /alert >}}
Delete merged branches
Deletes all branches that are merged into the project's default branch.
{{< alert type="note" >}}
Protected branches are not deleted as part of this operation.
{{< /alert >}}
DELETE /projects/:id/repository/merged_branches
Parameters:
| Attribute | Type | Required | Description | 
|---|---|---|---|
| id | integer/string | yes | ID or URL-encoded path of the project. | 
Example request:
curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/repository/merged_branches"