Публичный APIБаза данных Git2. POST /repos/{owner}/{repo}/git/commits - создать коммит

2. POST /repos/{owner}/{repo}/git/commits — cоздать коммит

Описание

Создает новый объект коммита в репозитории на основе указанного дерева (tree), сообщения и родительских коммитов.
Этот метод не обновляет ветки и не создает ссылок — он лишь формирует новый коммит в истории Git, который впоследствии можно использовать, например, для обновления ветки через /git/refs.

Параметры URL

ПараметрТипОбязательныйОписание
ownerstringДаВладелец репозитория (пользователь или организация)
repostringДаНазвание репозитория

Параметры запроса

Данный метод не использует параметры запроса.

Тело запроса

Формат: application/json
Обязательные поля:

{
  "message": "feat: add new config file",
  "tree": "d3adb33f1234567890abcdef1234567890abcdef",
  "parents": ["a1b2c3d4e5f6789012345678901234567890abcd"],
  "author": {
    "name": "Alice Developer",
    "email": "alice@example.com",
    "date": "2025-10-23T12:00:00Z"
  },
  "committer": {
    "name": "Alice Developer",
    "email": "alice@example.com",
    "date": "2025-10-23T12:00:00Z"
  }
}
ПолеТипОбязательныйОписание
messagestringДаСообщение коммита
treestringДаSHA дерева, которое представляет состояние файлов в этом коммите
parentsarrayНет*Список SHA родительских коммитов (обычно один; для корневого коммита — пустой массив или отсутствует)
authorobjectНетИнформация об авторе (если не указан — используется текущий пользователь)
committerobjectНетИнформация о коммитере (если не указан — используется текущий пользователь)

💡 Если author или committer не указаны, GitVerse использует данные авторизованного пользователя и текущее время.

Поля объектов author / committer

ПолеТипОбязательныйОписание
namestringДаИмя автора/коммитера
emailstringДаEmail
datestringНетДата в формате ISO 8601 (например, 2025-10-23T12:00:00Z)

Пример запроса

curl -X POST "https://api.gitverse.ru/repos/gitverse/example-repo/git/commits" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1" \
  -H "Content-Type: application/json" \
  -d '{
        "message": "docs: update changelog",
        "tree": "d3adb33f1234567890abcdef1234567890abcdef",
        "parents": ["a1b2c3d4e5f6789012345678901234567890abcd"]
      }'

Ответ (201 Created)

Пример JSON-ответа:

{
  "sha": "f00dcafe1234567890abcdef1234567890abcdef",
  "url": "https://api.gitverse.ru/repos/gitverse/example-repo/git/commits/f00dcafe1234567890abcdef1234567890abcdef",
  "html_url": "https://gitverse.ru/gitverse/example-repo/commit/f00dcafe1234567890abcdef1234567890abcdef",
  "author": {
    "name": "Alice Developer",
    "email": "alice@example.com",
    "date": "2025-10-23T12:00:00Z"
  },
  "committer": {
    "name": "Alice Developer",
    "email": "alice@example.com",
    "date": "2025-10-23T12:00:00Z"
  },
  "message": "docs: update changelog",
  "tree": {
    "sha": "d3adb33f1234567890abcdef1234567890abcdef",
    "url": "https://api.gitverse.ru/repos/gitverse/example-repo/git/trees/d3adb33f1234567890abcdef1234567890abcdef"
  },
  "parents": [
    {
      "sha": "a1b2c3d4e5f6789012345678901234567890abcd",
      "url": "https://api.gitverse.ru/repos/gitverse/example-repo/git/commits/a1b2c3d4e5f6789012345678901234567890abcd",
      "html_url": "https://gitverse.ru/gitverse/example-repo/commit/a1b2c3d4e5f6789012345678901234567890abcd"
    }
  ],
  "verification": {
    "verified": false,
    "reason": "unsigned",
    "signature": null,
    "payload": null
  }
}

Формат ответа

application/vnd.gitverse.object+json;version=1

Поля ответа

ПолеТипОписание
shastringSHA нового коммита
urlstringAPI-ссылка на коммит
html_urlstringСсылка на коммит в веб-интерфейсе
authorobjectАвтор коммита
committerobjectКоммитер
messagestringСообщение коммита
treeobjectИнформация о дереве
parentsarrayСписок родительских коммитов
verificationobjectИнформация о подписи коммита (обычно verified: false)

Подполе tree

ПолеТипОписание
shastringSHA дерева
urlstringAPI-ссылка на дерево

Подполе verification

ПолеТипОписание
verifiedbooleanПодтверждена ли подпись
reasonstringПричина (например, unsigned)
signaturestring | nullПодпись (если есть)
payloadstring | nullПодписанные данные

Коды ответа

КодСтатусОписание
201CreatedКоммит успешно создан
400Bad RequestНекорректные данные в теле запроса
403ForbiddenНедостаточно прав для записи в репозиторий
404Not FoundРепозиторий не найден
422Unprocessable EntityОшибка валидации (например, недопустимый SHA дерева)
500Internal Server ErrorВнутренняя ошибка сервера