2. POST /repos/{owner}/{repo}/git/commits — cоздать коммит
Описание
Создает новый объект коммита в репозитории на основе указанного дерева (tree), сообщения и родительских коммитов.
Этот метод не обновляет ветки и не создает ссылок — он лишь формирует новый коммит в истории Git, который впоследствии можно использовать, например, для обновления ветки через /git/refs.
Параметры URL
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
owner | string | Да | Владелец репозитория (пользователь или организация) |
repo | string | Да | Название репозитория |
Параметры запроса
Данный метод не использует параметры запроса.
Тело запроса
Формат: 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"
}
}| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
message | string | Да | Сообщение коммита |
tree | string | Да | SHA дерева, которое представляет состояние файлов в этом коммите |
parents | array | Нет* | Список SHA родительских коммитов (обычно один; для корневого коммита — пустой массив или отсутствует) |
author | object | Нет | Информация об авторе (если не указан — используется текущий пользователь) |
committer | object | Нет | Информация о коммитере (если не указан — используется текущий пользователь) |
💡 Если
authorилиcommitterне указаны, GitVerse использует данные авторизованного пользователя и текущее время.
Поля объектов author / committer
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
name | string | Да | Имя автора/коммитера |
email | string | Да | |
date | string | Нет | Дата в формате 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
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
sha | string | SHA нового коммита |
url | string | API-ссылка на коммит |
html_url | string | Ссылка на коммит в веб-интерфейсе |
author | object | Автор коммита |
committer | object | Коммитер |
message | string | Сообщение коммита |
tree | object | Информация о дереве |
parents | array | Список родительских коммитов |
verification | object | Информация о подписи коммита (обычно verified: false) |
Подполе tree
| Поле | Тип | Описание |
|---|---|---|
sha | string | SHA дерева |
url | string | API-ссылка на дерево |
Подполе verification
| Поле | Тип | Описание |
|---|---|---|
verified | boolean | Подтверждена ли подпись |
reason | string | Причина (например, unsigned) |
signature | string | null | Подпись (если есть) |
payload | string | null | Подписанные данные |
Коды ответа
| Код | Статус | Описание |
|---|---|---|
| 201 | Created | Коммит успешно создан |
| 400 | Bad Request | Некорректные данные в теле запроса |
| 403 | Forbidden | Недостаточно прав для записи в репозиторий |
| 404 | Not Found | Репозиторий не найден |
| 422 | Unprocessable Entity | Ошибка валидации (например, недопустимый SHA дерева) |
| 500 | Internal Server Error | Внутренняя ошибка сервера |