ブランチAPI
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
このAPIを使用して、Gitブランチを管理します。
プロジェクトに設定されているブランチの保護を変更するには、保護ブランチAPIを使用します。
すべてのリポジトリのブランチを一覧表示
プロジェクトのすべてのリポジトリブランチを名前のアルファベット順で一覧表示します。名前で検索するか、正規表現を使用して特定のブランチパターンを検索します。ブランチに関する詳細情報(保護ステータス、マージステータス、コミットの詳細など)を返します。
このエンドポイントは、リポジトリが公開されている場合、認証なしでアクセスできます。
GET /projects/:id/repository/branchesサポートされている属性は以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
regex | 文字列 | いいえ | re2正規表現に一致する名前のブランチのリストを返します。searchと同時に使用することはできません。 |
search | 文字列 | いいえ | 検索文字列を含むブランチのリストを返します。^termを使用してtermで始まるブランチを、term$を使用してtermで終わるブランチを検索できます。 |
成功した場合、200 OKと次のレスポンス属性を返します:
| 属性 | 型 | 説明 |
|---|---|---|
can_push | ブール値 | trueの場合、認証済みユーザーはこのブランチにプッシュできます。 |
commit | オブジェクト | ブランチ上の最新コミットに関する詳細。 |
commit.author_email | 文字列 | 変更の作成者であるユーザーのメールアドレス。 |
commit.author_name | 文字列 | 変更の作成者であるユーザーの名前。 |
commit.authored_date | 日時(ISO 8601) | コミットが作成された日時。 |
commit.committed_date | 日時(ISO 8601) | コミットがコミットされた日時。 |
commit.committer_email | 文字列 | 変更をコミットしたユーザーのメールアドレス。 |
commit.committer_name | 文字列 | 変更をコミットしたユーザーの名前。 |
commit.created_at | 日時(ISO 8601) | コミットが作成された日時。 |
commit.extended_trailers | オブジェクト | コミットメッセージから解析された拡張Gitトレーラー。 |
commit.id | 文字列 | コミットの完全なSHA。 |
commit.message | 文字列 | 完全なコミットメッセージ。 |
commit.parent_ids | 配列 | 親コミットSHAの配列。 |
commit.short_id | 文字列 | コミットの省略されたSHA。 |
commit.title | 文字列 | コミットメッセージのタイトル。 |
commit.trailers | オブジェクト | コミットメッセージから解析されたGitトレーラー。 |
commit.web_url | 文字列 | GitLab UIでコミットを表示するためのURL。 |
default | ブール値 | trueの場合、そのブランチはプロジェクトのデフォルトブランチです。 |
developers_can_merge | ブール値 | trueの場合、デベロッパー、メンテナー、またはオーナーロールを持つユーザーはこのブランチにマージできます。 |
developers_can_push | ブール値 | trueの場合、デベロッパー、メンテナー、またはオーナーロールを持つユーザーはこのブランチにプッシュできます。 |
merged | ブール値 | trueの場合、そのブランチはデフォルトブランチにマージされています。 |
name | 文字列 | ブランチの名前。 |
protected | ブール値 | trueの場合、そのブランチは強制プッシュと削除から保護されています。 |
web_url | 文字列 | GitLab UIでブランチを表示するためのURL。 |
リクエスト例:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/repository/branches"レスポンス例:
[
{
"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 /projects/:id/repository/branches/:branchサポートされている属性は以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
branch | 文字列 | はい | ブランチのURLエンコードされた名前。 |
成功した場合、200 OKと次のレスポンス属性を返します:
| 属性 | 型 | 説明 |
|---|---|---|
can_push | ブール値 | 認証済みユーザーがこのブランチにプッシュできるかどうか。 |
commit | オブジェクト | ブランチ上の最新コミットに関する詳細。 |
commit.author_email | 文字列 | コミットの作成者のメールアドレス。 |
commit.author_name | 文字列 | コミットの作成者名。 |
commit.authored_date | 文字列 | コミットが作成された日時(ISO 8601形式)。 |
commit.committer_email | 文字列 | 変更をコミットしたユーザーのメールアドレス。 |
commit.committer_name | 文字列 | 変更をコミットしたユーザーの名前。 |
commit.committed_date | 文字列 | コミットがコミットされた日時(ISO 8601形式)。 |
commit.created_at | 文字列 | コミットが作成された日時(ISO 8601形式)。 |
commit.extended_trailers | オブジェクト | コミットメッセージから解析された拡張Gitトレーラー。 |
commit.id | 文字列 | コミットの完全なSHA。 |
commit.message | 文字列 | 完全なコミットメッセージ。 |
commit.parent_ids | 配列 | 親コミットSHAの配列。 |
commit.short_id | 文字列 | コミットの省略されたSHA。 |
commit.title | 文字列 | コミットメッセージのタイトル。 |
commit.trailers | オブジェクト | コミットメッセージから解析されたGitトレーラー。 |
commit.web_url | 文字列 | GitLab UIでコミットを表示するためのURL。 |
default | ブール値 | これがプロジェクトのデフォルトブランチであるかどうか。 |
developers_can_merge | ブール値 | デベロッパーロールを持つユーザーがこのブランチにマージできるかどうか。 |
developers_can_push | ブール値 | デベロッパーロールを持つユーザーがこのブランチにプッシュできるかどうか。 |
merged | ブール値 | そのブランチがデフォルトブランチにマージされているかどうか。 |
name | 文字列 | ブランチの名前。 |
protected | ブール値 | そのブランチが強制プッシュと削除から保護されているかどうか。 |
web_url | 文字列 | GitLab UIでブランチを表示するためのURL。 |
リクエスト例:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/repository/branches/main"レスポンス例:
{
"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": {},
"extended_trailers": {},
"web_url": "https://gitlab.example.com/my-group/my-project/-/commit/7b5c3cc8be40ee161ae89a06bba6229da1032a0c"
}
}リポジトリブランチを保護する
リポジトリブランチの保護については、POST /projects/:id/protected_branchesを参照してください。
リポジトリブランチの保護を解除する
リポジトリブランチの保護の解除については、DELETE /projects/:id/protected_branches/:nameを参照してください。
リポジトリブランチを作成する
リポジトリに新しいブランチを作成します。
POST /projects/:id/repository/branchesサポートされている属性は以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
branch | 文字列 | はい | ブランチの名前。ハイフンとアンダースコアを除くスペースや特殊文字を含めることはできません。 |
ref | 文字列 | はい | ブランチまたはコミットSHA(新しいブランチの作成元)。 |
成功した場合、201 Createdと次のレスポンス属性を返します:
| 属性 | 型 | 説明 |
|---|---|---|
can_push | ブール値 | trueの場合、認証済みユーザーはこのブランチにプッシュできます。 |
commit | オブジェクト | ブランチ上の最新コミットに関する詳細。 |
commit.author_email | 文字列 | コミットの作成者のメールアドレス。 |
commit.author_name | 文字列 | コミットの作成者名。 |
commit.authored_date | 文字列 | コミットが作成された日時(ISO 8601形式)。 |
commit.committed_date | 文字列 | コミットがコミットされた日時(ISO 8601形式)。 |
commit.committer_email | 文字列 | 変更をコミットしたユーザーのメールアドレス。 |
commit.committer_name | 文字列 | 変更をコミットしたユーザーの名前。 |
commit.created_at | 文字列 | コミットが作成された日時(ISO 8601形式)。 |
commit.extended_trailers | オブジェクト | コミットメッセージから解析された拡張Gitトレーラー。 |
commit.id | 文字列 | コミットの完全なSHA。 |
commit.message | 文字列 | 完全なコミットメッセージ。 |
commit.parent_ids | 配列 | 親コミットSHAの配列。 |
commit.short_id | 文字列 | コミットの省略されたSHA。 |
commit.title | 文字列 | コミットメッセージのタイトル。 |
commit.trailers | オブジェクト | コミットメッセージから解析されたGitトレーラー。 |
commit.web_url | 文字列 | GitLab UIでコミットを表示するためのURL。 |
default | ブール値 | trueの場合、このブランチをプロジェクトのデフォルトブランチとして設定します。 |
developers_can_merge | ブール値 | trueの場合、デベロッパーロールを持つユーザーはこのブランチにマージできます。 |
developers_can_push | ブール値 | trueの場合、デベロッパーロールを持つユーザーはこのブランチにプッシュできます。 |
merged | ブール値 | trueの場合、そのブランチはデフォルトブランチにマージされます。 |
name | 文字列 | ブランチの名前。 |
protected | ブール値 | trueの場合、そのブランチは強制プッシュと削除から保護されています。 |
web_url | 文字列 | GitLab UIでブランチを表示するためのURL。 |
リクエスト例:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/repository/branches?branch=newbranch&ref=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": {},
"extended_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 /projects/:id/repository/branches/:branchサポートされている属性は以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
branch | 文字列 | はい | ブランチのURLエンコードされた名前。デフォルトブランチまたは保護ブランチは削除できません。 |
成功した場合、204 No Contentを返します。
リクエスト例:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/repository/branches/newbranch"ブランチを削除しても、関連するすべてのデータが完全に消去されるわけではありません。プロジェクトの履歴を維持し、リカバリープロセスをサポートするために、一部の情報が保持されます。詳細については、機密情報を処理を参照してください。
マージされたすべてのブランチを削除
プロジェクトのデフォルトブランチにマージされたブランチをすべてを削除します。
保護ブランチはこの操作の一部として削除されません。
DELETE /projects/:id/repository/merged_branchesサポートされている属性は以下のとおりです:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのIDまたはURLエンコードされたパス。 |
成功した場合、202 Acceptedを返します。
リクエスト例:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/repository/merged_branches"