コミットAPI

この API はリポジトリのコミットをオペレーションします。コミットに関するGitLab 固有の情報についてはこちらをご覧ください。

回答例

この API からの応答の日付フィールドには、情報が重複している、または重複しているように見えるものがあります:

  • created_at フィールドは他の GitLab API との整合性のためだけに存在します。これは常にcommitted_date フィールドと同一です。
  • committed_dateauthored_date フィールドは異なるソースから生成されたもので、同一ではない可能性があります。

リポジトリのコミット一覧

GitLab 15.10 で導入された作成者別のコミット。

プロジェクト内のリポジトリコミットの一覧を取得します。

GET /projects/:id/repository/commits
属性種類必須説明
id整数/文字列yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
ref_name文字列です。いいえリポジトリのブランチ、タグ、リビジョン範囲の名前。
since文字列です。いいえこの日付以降のコミットのみが ISO 8601 形式で返されます。YYYY-MM-DDTHH:MM:SSZ
until文字列です。いいえこの日付以前または日付のコミットのみが ISO 8601 形式で返されます。YYYY-MM-DDTHH:MM:SSZ
path文字列です。いいえファイルパス
author文字列です。いいえコミット作成者からコミットを検索します。
allbooleanいいえリポジトリからすべてのコミットを取得します。
with_statsbooleanいいえ各コミットに関する統計がレスポンスに追加されます。
first_parentbooleanいいえマージコミットを見たときに最初の親コミットのみに従うようにします。
order文字列です。いいえコミットを順番に並べます。可能な値:default topo.デフォルトはdefault、コミットは時系列順に表示されます。
trailersbooleanいいえコミットごとにGit Trailerを解析して含めます。
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits"

応答例

[
  {
    "id": "ed899a2f4b50b4370feeea94676502b42383c746",
    "short_id": "ed899a2f4b5",
    "title": "Replace sanitize with escape once",
    "author_name": "Example User",
    "author_email": "user@example.com",
    "authored_date": "2021-09-20T11:50:22.001+00:00",
    "committer_name": "Administrator",
    "committer_email": "admin@example.com",
    "committed_date": "2021-09-20T11:50:22.001+00:00",
    "created_at": "2021-09-20T11:50:22.001+00:00",
    "message": "Replace sanitize with escape once",
    "parent_ids": [
      "6104942438c14ec7bd21c6cd5bd995272b3faff6"
    ],
    "web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746"
  },
  {
    "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
    "short_id": "6104942438c",
    "title": "Sanitize for network graph",
    "author_name": "randx",
    "author_email": "user@example.com",
    "committer_name": "ExampleName",
    "committer_email": "user@example.com",
    "created_at": "2021-09-20T09:06:12.201+00:00",
    "message": "Sanitize for network graph",
    "parent_ids": [
      "ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
    ],
    "web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746"
  }
]

複数のファイルとアクションを含むコミットの作成

JSON ペイロードを投稿してコミットを作成します。

POST /projects/:id/repository/commits
属性種類必須説明
id整数/文字列yes プロジェクトのIDまたはURLエンコードされたパス
branch文字列です。yesコミットするブランチの名前。新しいブランチを作成するには、start_branch あるいはstart_sha のどちらか、そしてオプションでstart_projectも指定します。
commit_message文字列です。yesコミットメッセージ
start_branch文字列です。いいえ新しいブランチを開始するブランチ名
start_sha文字列です。いいえから新しいブランチを開始するコミットの SHA。
start_project整数/文字列いいえ新しいブランチを開始するプロジェクトのプロジェクト ID あるいはURL エンコードされたパス。デフォルトはid です。
actions[]アレイyesバッチとしてコミットするアクションハッシュの配列。どのような属性を指定するかは次の表を参照ください。
author_email文字列です。いいえコミット作成者のメールアドレスを指定します。
author_name文字列です。いいえコミット作成者の名前を指定します。
statsbooleanいいえコミットの統計情報を含みます。デフォルトはtrueです。
forcebooleanいいえ truestart_branch あるいはstart_sha
actions[] 属性種類必須説明
action文字列です。yes実行するアクション:create delete,move,update, またはchmod
file_path文字列です。yesファイルへのフルパス。例:lib/class.rb.
previous_path文字列です。いいえ移動するファイルのオリジナルフルパス。例えば、lib/class1.rbmove アクションでのみ考慮されます。
content文字列です。いいえファイルの内容。deletechmodmove 以外は必須。指定しない移動アクションはcontent 既存のファイルコンテンツを保持し、それ以外の値は contentファイルコンテンツを上書きします。
encoding文字列です。いいえ text またはbase64text がデフォルト。
last_commit_id文字列です。いいえ最後に確認されたファイルのコミットID。更新、移動、および削除アクションでのみ考慮されます。
execute_filemodebooleanいいえ true/false がファイルの実行フラグを有効/無効にするとき。chmod アクションでのみ考慮されます。
PAYLOAD=$(cat << 'JSON'
{
  "branch": "master",
  "commit_message": "some commit message",
  "actions": [
    {
      "action": "create",
      "file_path": "foo/bar",
      "content": "some content"
    },
    {
      "action": "delete",
      "file_path": "foo/bar2"
    },
    {
      "action": "move",
      "file_path": "foo/bar3",
      "previous_path": "foo/bar4",
      "content": "some content"
    },
    {
      "action": "update",
      "file_path": "foo/bar5",
      "content": "new content"
    },
    {
      "action": "chmod",
      "file_path": "foo/bar5",
      "execute_filemode": true
    }
  ]
}
JSON
)
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" \
     --data "$PAYLOAD" "https://gitlab.example.com/api/v4/projects/1/repository/commits"

応答例

{
  "id": "ed899a2f4b50b4370feeea94676502b42383c746",
  "short_id": "ed899a2f4b5",
  "title": "some commit message",
  "author_name": "Example User",
  "author_email": "user@example.com",
  "committer_name": "Example User",
  "committer_email": "user@example.com",
  "created_at": "2016-09-20T09:26:24.000-07:00",
  "message": "some commit message",
  "parent_ids": [
    "ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
  ],
  "committed_date": "2016-09-20T09:26:24.000-07:00",
  "authored_date": "2016-09-20T09:26:24.000-07:00",
  "stats": {
    "additions": 2,
    "deletions": 2,
    "total": 4
  },
  "status": null,
  "web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746"
}

GitLab はフォームエンコーディングに対応しています。以下はCommit APIをフォームエンコーディングで使用した例です:

curl --request POST \
     --form "branch=master" \
     --form "commit_message=some commit message" \
     --form "start_branch=master" \
     --form "actions[][action]=create" \
     --form "actions[][file_path]=foo/bar" \
     --form "actions[][content]=</path/to/local.file" \
     --form "actions[][action]=delete" \
     --form "actions[][file_path]=foo/bar2" \
     --form "actions[][action]=move" \
     --form "actions[][file_path]=foo/bar3" \
     --form "actions[][previous_path]=foo/bar4" \
     --form "actions[][content]=</path/to/local1.file" \
     --form "actions[][action]=update" \
     --form "actions[][file_path]=foo/bar5" \
     --form "actions[][content]=</path/to/local2.file" \
     --form "actions[][action]=chmod" \
     --form "actions[][file_path]=foo/bar5" \
     --form "actions[][execute_filemode]=true" \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     "https://gitlab.example.com/api/v4/projects/1/repository/commits"

単一のコミットを取得

コミットハッシュやブランチ名、タグ名で指定したコミットを取得します。

GET /projects/:id/repository/commits/:sha

パラメータを指定します:

属性種類必須説明
id整数/文字列yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
sha文字列です。yesリポジトリのブランチやタグのコミットハッシュや名前
statsbooleanいいえコミットの統計情報を含みます。デフォルトはtrueです。
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/master"

応答例

{
  "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
  "short_id": "6104942438c",
  "title": "Sanitize for network graph",
  "author_name": "randx",
  "author_email": "user@example.com",
  "committer_name": "Dmitriy",
  "committer_email": "user@example.com",
  "created_at": "2021-09-20T09:06:12.300+03:00",
  "message": "Sanitize for network graph",
  "committed_date": "2021-09-20T09:06:12.300+03:00",
  "authored_date": "2021-09-20T09:06:12.420+03:00",
  "parent_ids": [
    "ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
  ],
  "last_pipeline" : {
    "id": 8,
    "ref": "master",
    "sha": "2dc6aa325a317eda67812f05600bdf0fcdc70ab0",
    "status": "created"
  },
  "stats": {
    "additions": 15,
    "deletions": 10,
    "total": 25
  },
  "status": "running",
  "web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/commit/6104942438c14ec7bd21c6cd5bd995272b3faff6"
}

コミットがプッシュされたリファレンスの取得

コミットがプッシュされたすべての参照 (ブランチやタグから) を取得します。ページ分割パラメータpage およびper_page を使用すると、参照一覧を制限することができます。

GET /projects/:id/repository/commits/:sha/refs

パラメータを指定します:

属性種類必須説明
id整数/文字列yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
sha文字列です。yesコミットハッシュ
type文字列です。いいえコミットのスコープ。指定可能な値branch,tag,all.デフォルトは . all
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/5937ac0a7beb003549fc5fd26fc247adbce4a52e/refs?type=all"

応答例

[
  {"type": "branch", "name": "'test'"},
  {"type": "branch", "name": "add-balsamiq-file"},
  {"type": "branch", "name": "wip"},
  {"type": "tag", "name": "v1.1.0"}
 ]

コミットのチェリーピック

指定したブランチへのコミットを cherry-pick します。

POST /projects/:id/repository/commits/:sha/cherry_pick

パラメータを指定します:

属性種類必須説明
id整数/文字列yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
sha文字列です。yesコミットハッシュ
branch文字列です。yesブランチの名前
dry_runbooleanいいえ変更をコミットしません。デフォルトはfalseです。GitLab 13.3 で導入。
message文字列です。いいえ新しいコミットで使用するカスタムコミットメッセージ。GitLab 14.0 で導入されました。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --form "branch=master" "https://gitlab.example.com/api/v4/projects/5/repository/commits/master/cherry_pick"

応答例

{
  "id": "8b090c1b79a14f2bd9e8a738f717824ff53aebad",
  "short_id": "8b090c1b",
  "author_name": "Example User",
  "author_email": "user@example.com",
  "authored_date": "2016-12-12T20:10:39.000+01:00",
  "created_at": "2016-12-12T20:10:39.000+01:00",
  "committer_name": "Administrator",
  "committer_email": "admin@example.com",
  "committed_date": "2016-12-12T20:10:39.000+01:00",
  "title": "Feature added",
  "message": "Feature added\n\nSigned-off-by: Example User <user@example.com>\n",
  "parent_ids": [
    "a738f717824ff53aebad8b090c1b79a14f2bd9e8"
  ],
  "web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/commit/8b090c1b79a14f2bd9e8a738f717824ff53aebad"
}

cherry-pickが失敗したイベントには、その理由を説明します:

{
  "message": "Sorry, we cannot cherry-pick this commit automatically. This commit may already have been cherry-picked, or a more recent commit may have updated some of its content.",
  "error_code": "empty"
}

この場合、チェンジセットが空であったためにチェリーピックが失敗し、そのコミットがすでにターゲットブランチに存在していることを示します。他に考えられるエラーコードはconflict で、これはマージが衝突したことを示しています。

dry_run が有効になっている場合、サーバーはチェリーピックを適用しようと_試みますが、結果の変更を実際にコミットする_ことはありません。cherry-pickがきれいに適用された場合、APIは200 OK で応答します:

{
  "dry_run": "success"
}

失敗した場合は、ドライランを実行しなかった場合と同じエラーが表示されます。

コミットの取り消し

指定したブランチのコミットを取り消します。

POST /projects/:id/repository/commits/:sha/revert

パラメータを指定します:

属性種類必須説明
id整数/文字列yes プロジェクトのIDまたはURLエンコードされたパス
sha文字列です。yesSHAをコミットして差し戻します。
branch文字列です。yes対象ブランチ名
dry_runbooleanいいえ変更をコミットしません。デフォルトはfalseです。GitLab 13.3 で導入
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --form "branch=master" \
     "https://gitlab.example.com/api/v4/projects/5/repository/commits/a738f717824ff53aebad8b090c1b79a14f2bd9e8/revert"

応答例

{
  "id":"8b090c1b79a14f2bd9e8a738f717824ff53aebad",
  "short_id": "8b090c1b",
  "title":"Revert \"Feature added\"",
  "created_at":"2018-11-08T15:55:26.000Z",
  "parent_ids":["a738f717824ff53aebad8b090c1b79a14f2bd9e8"],
  "message":"Revert \"Feature added\"\n\nThis reverts commit a738f717824ff53aebad8b090c1b79a14f2bd9e8",
  "author_name":"Administrator",
  "author_email":"admin@example.com",
  "authored_date":"2018-11-08T15:55:26.000Z",
  "committer_name":"Administrator",
  "committer_email":"admin@example.com",
  "committed_date":"2018-11-08T15:55:26.000Z",
  "web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/commit/8b090c1b79a14f2bd9e8a738f717824ff53aebad"
}

リバートに失敗したイベントの場合、レスポンスではその理由について説明します:

{
  "message": "Sorry, we cannot revert this commit automatically. This commit may already have been reverted, or a more recent commit may have updated some of its content.",
  "error_code": "conflict"
}

この場合、差し戻しに失敗したのは、差し戻しの際にマージ競合が発生したためです。他に考えられるエラーコードはempty で、これはチェンジセットが空であったことを示します。

dry_run が有効な場合、サーバーは差し戻しの適用を_試みますが、その結果生じた変更は実際にはコミットさ_れません。差し戻しがきれいに適用された場合、API は200 OK で応答します:

{
  "dry_run": "success"
}

失敗した場合は、ドライランを実行しなかった場合と同じエラーが表示されます。

コミットの diff の取得

プロジェクト内のコミットの diff を取得します。

GET /projects/:id/repository/commits/:sha/diff

パラメータを指定します:

属性種類必須説明
id整数/文字列yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
sha文字列です。yesリポジトリのブランチやタグのコミットハッシュや名前
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/master/diff"

応答例

[
  {
    "diff": "@@ -71,6 +71,8 @@\n sudo -u git -H bundle exec rake migrate_keys RAILS_ENV=production\n sudo -u git -H bundle exec rake migrate_inline_notes RAILS_ENV=production\n \n+sudo -u git -H bundle exec rake gitlab:assets:compile RAILS_ENV=production\n+\n ```\n \n ### 6. Update config files",
    "new_path": "doc/update/5.4-to-6.0.md",
    "old_path": "doc/update/5.4-to-6.0.md",
    "a_mode": null,
    "b_mode": "100644",
    "new_file": false,
    "renamed_file": false,
    "deleted_file": false
  }
]

コミットのコメントを取得

プロジェクト内のコミットのコメントを取得します。

GET /projects/:id/repository/commits/:sha/comments

パラメータを指定します:

属性種類必須説明
id整数/文字列yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
sha文字列です。yesリポジトリのブランチやタグのコミットハッシュや名前
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/master/comments"

応答例

[
  {
    "note": "this code is really nice",
    "author": {
      "id": 11,
      "username": "admin",
      "email": "admin@local.host",
      "name": "Administrator",
      "state": "active",
      "created_at": "2014-03-06T08:17:35.000Z"
    }
  }
]

コミットへのコメントの投稿

コミットにコメントを追加します。

特定のファイルの特定の行にコメントを投稿するには、完全なコミット SHA を指定する必要があります。pathlineline_typenewとします。

コメントは、以下のケースの少なくとも1つが有効であれば、最後のコミットの最後に追加されます:

  • sha がブランチまたはタグであり、line またはpath が無効である場合。
  • line の番号が無効(存在しない)。
  • path は無効です(存在しません)。

上記のいずれの場合も、lineline_typepath のレスポンスは、nullに設定されます。

マージリクエストにコメントする他のアプローチについては、Notes API のCreate new merge request noteおよび Discussions API のCreate a new thread in the merge request diffを参照してください。

POST /projects/:id/repository/commits/:sha/comments
属性種類必須説明
id整数/文字列yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
sha文字列です。yesリポジトリのブランチやタグのコミット SHA や名前
note文字列です。yesコメントのテキスト
path文字列です。いいえリポジトリからの相対ファイルパス
line整数。いいえコメントを配置する行番号
line_type文字列です。いいえ行のタイプ。new またはold を引数にとります。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --form "note=Nice picture\!" --form "path=README.md" --form "line=11" --form "line_type=new" \
     "https://gitlab.example.com/api/v4/projects/17/repository/commits/18f3e63d05582537db6d183d9d557be09e1f90c8/comments"

応答例

{
   "author" : {
      "web_url" : "https://gitlab.example.com/janedoe",
      "avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/jane-doe-400-400.png",
      "username" : "janedoe",
      "state" : "active",
      "name" : "Jane Doe",
      "id" : 28
   },
   "created_at" : "2016-01-19T09:44:55.600Z",
   "line_type" : "new",
   "path" : "README.md",
   "line" : 11,
   "note" : "Nice picture!"
}

コミットのディスカッションを取得

プロジェクト内のコミットのディスカッションを取得します。

GET /projects/:id/repository/commits/:sha/discussions

パラメータを指定します:

属性種類必須説明
id整数/文字列yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
sha文字列です。yesリポジトリのブランチやタグのコミットハッシュや名前
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/4604744a1c64de00ff62e1e8a6766919923d2b41/discussions"

応答例

[
  {
    "id": "4604744a1c64de00ff62e1e8a6766919923d2b41",
    "individual_note": true,
    "notes": [
      {
        "id": 334686748,
        "type": null,
        "body": "Nice piece of code!",
        "attachment": null,
        "author" : {
          "id" : 28,
          "name" : "Jane Doe",
          "username" : "janedoe",
          "web_url" : "https://gitlab.example.com/janedoe",
          "state" : "active",
          "avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/jane-doe-400-400.png"
        },
        "created_at": "2020-04-30T18:48:11.432Z",
        "updated_at": "2020-04-30T18:48:11.432Z",
        "system": false,
        "noteable_id": null,
        "noteable_type": "Commit",
        "resolvable": false,
        "confidential": null,
        "noteable_iid": null,
        "commands_changes": {}
      }
    ]
  }
]

コミットステータス

GitLab で使用するコミットステータス API です。

コミットのステータスを一覧表示します

プロジェクト内のコミットのステータスを一覧表示します。pagination パラメータpage およびper_page を使用して、参照一覧を制限することができます。

GET /projects/:id/repository/commits/:sha/statuses
属性種類必須説明
id整数/文字列yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
sha文字列です。yesコミットSHA
ref文字列です。いいえリポジトリのブランチまたはタグの名前、または省略した場合はデフォルトのブランチ
stage文字列です。いいえ例えば、ビルドステージでフィルタリングします、test
name文字列です。いいえ ジョブ名でフィルタします、bundler:audit
allbooleanいいえ最新のステータスだけでなく、すべてのステータスを返します。
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/17/repository/commits/18f3e63d05582537db6d183d9d557be09e1f90c8/statuses"

応答例

[
   ...

   {
      "status" : "pending",
      "created_at" : "2016-01-19T08:40:25.934Z",
      "started_at" : null,
      "name" : "bundler:audit",
      "allow_failure" : true,
      "author" : {
         "username" : "janedoe",
         "state" : "active",
         "web_url" : "https://gitlab.example.com/janedoe",
         "avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/jane-doe-400-400.png",
         "id" : 28,
         "name" : "Jane Doe"
      },
      "description" : null,
      "sha" : "18f3e63d05582537db6d183d9d557be09e1f90c8",
      "target_url" : "https://gitlab.example.com/janedoe/gitlab-foss/builds/91",
      "finished_at" : null,
      "id" : 91,
      "ref" : "master"
   },
   {
      "started_at" : null,
      "name" : "test",
      "allow_failure" : false,
      "status" : "pending",
      "created_at" : "2016-01-19T08:40:25.832Z",
      "target_url" : "https://gitlab.example.com/janedoe/gitlab-foss/builds/90",
      "id" : 90,
      "finished_at" : null,
      "ref" : "master",
      "sha" : "18f3e63d05582537db6d183d9d557be09e1f90c8",
      "author" : {
         "id" : 28,
         "name" : "Jane Doe",
         "username" : "janedoe",
         "web_url" : "https://gitlab.example.com/janedoe",
         "state" : "active",
         "avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/jane-doe-400-400.png"
      },
      "description" : null
   },

   ...
]

コミットのパイプラインステータスの設定

コミットのパイプラインステータスを追加または更新します。コミットがマージリクエストに関連付けられている場合、APIコールはマージリクエストのソースブランチにあるコミットを対象としなければなりません。

POST /projects/:id/statuses/:sha
属性種類必須説明
id整数/文字列yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
sha文字列です。yesコミットSHA
state文字列です。yesステータスの状態。以下のいずれかを指定します:pending running,success,failedcanceled
ref文字列です。いいえステータスが参照するref (ブランチまたはタグ)
name またはcontext 文字列です。いいえこのステータスを他のシステムのステータスと区別するためのラベル。デフォルト値はdefault
target_url文字列です。いいえこのステータスに関連付けるターゲットURL
description文字列です。いいえステータスの短い説明
coverageフロートいいえ総コードカバレッジ
pipeline_id整数。いいえステータスを設定するパイプラインのID。同じSHAに複数のパイプラインがある場合に使用します。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/17/statuses/18f3e63d05582537db6d183d9d557be09e1f90c8?state=success"

応答例

{
   "author" : {
      "web_url" : "https://gitlab.example.com/janedoe",
      "name" : "Jane Doe",
      "avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/jane-doe-400-400.png",
      "username" : "janedoe",
      "state" : "active",
      "id" : 28
   },
   "name" : "default",
   "sha" : "18f3e63d05582537db6d183d9d557be09e1f90c8",
   "status" : "success",
   "coverage": 100.0,
   "description" : null,
   "id" : 93,
   "target_url" : null,
   "ref" : null,
   "started_at" : null,
   "created_at" : "2016-01-19T09:05:50.355Z",
   "allow_failure" : false,
   "finished_at" : "2016-01-19T09:05:50.365Z"
}

コミットに関連するマージリクエストの一覧

特定のコミットを最初に導入したマージリクエストについての情報を返します。

GET /projects/:id/repository/commits/:sha/merge_requests
属性種類必須説明
id整数/文字列yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
sha文字列です。yesコミットSHA
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/af5b13261899fb2c0db30abdd0af8b07cb44fdc5/merge_requests"

応答例

[
   {
      "id":45,
      "iid":1,
      "project_id":35,
      "title":"Add new file",
      "description":"",
      "state":"opened",
      "created_at":"2018-03-26T17:26:30.916Z",
      "updated_at":"2018-03-26T17:26:30.916Z",
      "target_branch":"master",
      "source_branch":"test-branch",
      "upvotes":0,
      "downvotes":0,
      "author" : {
        "web_url" : "https://gitlab.example.com/janedoe",
        "name" : "Jane Doe",
        "avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/jane-doe-400-400.png",
        "username" : "janedoe",
        "state" : "active",
        "id" : 28
      },
      "assignee":null,
      "source_project_id":35,
      "target_project_id":35,
      "labels":[ ],
      "draft":false,
      "work_in_progress":false,
      "milestone":null,
      "merge_when_pipeline_succeeds":false,
      "merge_status":"can_be_merged",
      "sha":"af5b13261899fb2c0db30abdd0af8b07cb44fdc5",
      "merge_commit_sha":null,
      "squash_commit_sha":null,
      "user_notes_count":0,
      "discussion_locked":null,
      "should_remove_source_branch":null,
      "force_remove_source_branch":false,
      "web_url":"https://gitlab.example.com/root/test-project/merge_requests/1",
      "time_stats":{
         "time_estimate":0,
         "total_time_spent":0,
         "human_time_estimate":null,
         "human_total_time_spent":null
      }
   }
]

コミットの GPG 署名を取得

コミットのGPG 署名を取得します。署名されていないコミットの場合は 404 応答となります。

GET /projects/:id/repository/commits/:sha/signature

パラメータを指定します:

属性種類必須説明
id整数/文字列yes認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
sha文字列です。yesリポジトリのブランチやタグのコミットハッシュや名前
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/repository/commits/da738facbc19eb2fc2cef57c49be0e6038570352/signature"

コミットが GPG 署名されている場合の応答例

{
  "signature_type": "PGP",
  "verification_status": "verified",
  "gpg_key_id": 1,
  "gpg_key_primary_keyid": "8254AAB3FBD54AC9",
  "gpg_key_user_name": "John Doe",
  "gpg_key_user_email": "johndoe@example.com",
  "gpg_key_subkey_id": null,
  "commit_source": "gitaly"
}

コミットが X.509 署名の場合の応答例:

{
  "signature_type": "X509",
  "verification_status": "unverified",
  "x509_certificate": {
    "id": 1,
    "subject": "CN=gitlab@example.org,OU=Example,O=World",
    "subject_key_identifier": "BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC:BC",
    "email": "gitlab@example.org",
    "serial_number": 278969561018901340486471282831158785578,
    "certificate_status": "good",
    "x509_issuer": {
      "id": 1,
      "subject": "CN=PKI,OU=Example,O=World",
      "subject_key_identifier": "AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB",
      "crl_url": "http://example.com/pki.crl"
    }
  },
  "commit_source": "gitaly"
}

コミットが符号なしの場合の応答例

{
  "message": "404 GPG Signature Not Found"
}