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
Поля ответа
Поле Тип Описание shastring SHA нового коммита urlstring API-ссылка на коммит html_urlstring Ссылка на коммит в веб-интерфейсе authorobject Автор коммита committerobject Коммитер messagestring Сообщение коммита treeobject Информация о дереве parentsarray Список родительских коммитов verificationobject Информация о подписи коммита (обычно verified: false)
Подполе tree
Поле Тип Описание shastring SHA дерева urlstring API-ссылка на дерево
Подполе verification
Поле Тип Описание verifiedboolean Подтверждена ли подпись reasonstring Причина (например, unsigned) signaturestring null Подпись (если есть) payloadstring null Подписанные данные
Коды ответа
Код Статус Описание 201 Created Коммит успешно создан 400 Bad Request Некорректные данные в теле запроса 403 Forbidden Недостаточно прав для записи в репозиторий 404 Not Found Репозиторий не найден 422 Unprocessable Entity Ошибка валидации (например, недопустимый SHA дерева) 500 Internal Server Error Внутренняя ошибка сервера