跳转至

获取仓库所有提交

GET /api/v5/repos/{owner}/{repo}/commits

该接口用于获取指定仓库的所有提交记录,支持按提交 SHA、文件路径、作者及时间范围进行筛选,并可通过分页方式浏览提交历史。

访问令牌支持说明

  • AtomGit 用户访问令牌(AtomGit user access tokens)

是否允许匿名访问

此接口允许匿名访问

请求参数

参数名 位置 类型 必填 说明
owner path string 是 仓库所属空间地址(企业、组织或个人的地址 path)
repo path string 是 仓库路径(path)
sha query string 否 提交起始的 SHA 值
path query string 否 包含该文件的提交
author query string 否 提交作者的邮箱或个人空间地址(username/login)
since query string 否 提交的起始时间,时间格式(2024-11-08T16:25:44Z)
until query string 否 提交的最后时间,时间格式为(2024-11-08T16:25:44Z)
page query string 否 当前的页码
per_page query string 否 每页的数量,最大为 100,默认 20

响应参数

响应体为一个数组,每个元素表示一次提交(commit),字段如下:

字段 类型 必返 可为空 说明
url string 是 否 提交详情地址
sha string 是 否 提交的 SHA 值
html_url string 是 否 提交的 HTML 页面地址
comments_url string 是 否 提交评论接口地址
commit object 是 否 提交内容信息(作者、提交者、文件树、提交说明)
author object 是 否 提交作者信息
committer object 是 否 提交者(committer)信息
parents object[] 是 否 父提交列表
co_authors object[] 是 否 共同作者列表

commit 对象

字段 类型 必返 可为空 说明
commit.author object 是 否 提交中的作者信息
commit.committer object 是 否 提交中的提交者信息
commit.tree object 是 否 提交对应的文件树
commit.message string 是 否 提交说明(commit message)

commit.author 对象

字段 类型 必返 可为空 说明
commit.author.name string 是 否 作者名称
commit.author.date string 是 否 提交时间
commit.author.email string 是 否 作者邮箱
commit.author.login string 是 否 作者登录名

commit.committer 对象

字段 类型 必返 可为空 说明
commit.committer.name string 是 否 提交者名称
commit.committer.date string 是 否 提交时间
commit.committer.email string 是 否 提交者邮箱
commit.committer.login string 是 否 提交者登录名

commit.tree 对象

字段 类型 必返 可为空 说明
commit.tree.sha string 是 否 文件树的 SHA 值
commit.tree.url string 是 否 文件树地址

author 对象

字段 类型 必返 可为空 说明
author.name string 是 否 作者名称
author.email string 是 否 作者邮箱
author.id integer 是 否 作者用户 ID
author.login string 是 否 作者登录名
author.type string 是 否 作者类型(如 User)
author.object_id string 是 否 作者对象 ID

committer 对象

字段 类型 必返 可为空 说明
committer.name string 是 否 提交者名称
committer.date string 是 否 提交时间
committer.email string 是 否 提交者邮箱
committer.id integer 是 否 提交者用户 ID
committer.login string 是 否 提交者登录名
committer.type string 是 否 提交者类型(如 User)
committer.object_id string 是 否 提交者对象 ID

parents 数组元素对象

字段 类型 必返 可为空 说明
parents[].sha string 是 否 父提交的 SHA 值
parents[].url string 是 否 父提交地址

co_authors 数组元素对象

字段 类型 必返 可为空 说明
co_authors[].id string 是 否 共同作者 ID
co_authors[].login string 是 否 共同作者登录名
co_authors[].name string 是 否 共同作者名称
co_authors[].avatar_url string 是 否 共同作者头像地址
co_authors[].html_url string 是 否 共同作者主页地址
co_authors[].email string 是 否 共同作者邮箱

失败响应

除成功响应外,调用方还需了解失败返回的形态以编写错误处理。

400 参数错误

{
  "error": "invalid_request",
  "message": "参数校验失败"
}

401 未认证

{
  "error": "unauthorized",
  "message": "缺少或无效的访问令牌"
}

404 未找到

{
  "error": "not_found",
  "message": "仓库或提交不存在"
}

错误字段名以后端实际返回为准。

HTTP 响应状态码

状态码 说明
200 成功(OK)
401 需要认证(Requires authentication)
403 禁止访问(Forbidden)
404 资源不存在(Not found)

请求示例

参数说明

本接口允许匿名访问,示例默认不携带令牌;如需访问私有仓库,可在查询参数中追加 access_token=<token>。

<owner> 替换为仓库所属空间地址(企业、组织或个人的地址 path); <repo> 替换为仓库路径(path)。

cURL

curl -X GET 'https://api.atomgit.com/api/v5/repos/<owner>/<repo>/commits' \
  -H 'Accept: application/json'

JavaScript

// 原生 fetch (Node.js 18+ / 浏览器)
const response = await fetch("https://api.atomgit.com/api/v5/repos/<owner>/<repo>/commits", {
  headers: {
    "Accept": "application/json",
  },
});

if (!response.ok) {
  throw new Error(`请求失败: ${response.status}`);
}

const data = await response.json();
console.log(data);

Python

import requests

resp = requests.get(
    "https://api.atomgit.com/api/v5/repos/<owner>/<repo>/commits",
    headers={
        "Accept": "application/json",
    },
    timeout=10,
)
resp.raise_for_status()

print(resp.json())

响应示例

状态码: 200

[
  {
    "url": "https://api.atomgit.com/api/v5/repos/mactribe/test02/commits/66a12f572722ebe2cad44f44d48e253a0f027e09",
    "sha": "66a12f572722ebe2cad44f44d48e253a0f027e09",
    "html_url": "https://api.atomgit.com/mactribe/test02/commits/detail/66a12f572722ebe2cad44f44d48e253a0f027e09",
    "comments_url": "https://api.atomgit.com/api/v5/repos/mactribe/test02/commits/66a12f572722ebe2cad44f44d48e253a0f027e09/comments",
    "commit": {
      "author": {
        "name": "dengmengmian",
        "date": "2024-09-25T08:14:59+08:00",
        "email": "my@dengmengmian.com",
        "login": "dengmengmian"
      },
      "committer": {
        "name": "dengmengmian",
        "date": "2024-09-25T08:14:59+08:00",
        "email": "my@dengmengmian.com",
        "login": "dengmengmian"
      },
      "tree": {
        "sha": "6214a5921eda7f5148f249587b74201d5946a6d4",
        "url": "https://api.atomgit.com/api/v5/repos/mactribe/test02/git/trees/6214a5921eda7f5148f249587b74201d5946a6d4"
      },
      "message": "feat:所有issue number 都改为 string 类型"
    },
    "author": {
      "name": "dengmengmian",
      "email": "my@dengmengmian.com",
      "id": 10086,
      "login": "dengmengmian",
      "type": "User",
      "object_id": "1"
    },
    "committer": {
      "name": "dengmengmian",
      "date": "2024-09-25T08:14:59+08:00",
      "email": "my@dengmengmian.com",
      "id": 10086,
      "login": "dengmengmian",
      "type": "User",
      "object_id": "1"
    },
    "parents": [
      {
        "sha": "0c41318014c472534a2abc2e0aa498fd49d046f1",
        "url": "https://api.atomgit.com/api/v5/repos/mactribe/test02/commits/0c41318014c472534a2abc2e0aa498fd49d046f1"
      }
    ],
    "co_authors": [
      {
        "id": "1",
        "login": "dengmengmian",
        "name": "dengmengmian",
        "avatar_url": "https://api.atomgit.com/avatar.png",
        "html_url": "https://api.atomgit.com/dengmengmian",
        "email": "my@dengmengmian.com"
      }
    ]
  }
]

错误码

错误码 说明
400 参数错误或请求无法解析
401 未认证或凭证无效(缺少/无效的访问凭证)
404 请求的资源不存在
405 请求方法不支持
429 请求过于频繁,触发限流
500 系统内部错误

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 gitcode-dev/atomgit-api-doc