25. DELETE /repos/{username}/{reponame}/git/refs/{ref} — удалить git-ссылку

Описание

Удаляет git-ссылку из репозитория — ветку, тег или кастомную ссылку. Сам git-объект (коммит), на который ссылка указывала, не удаляется — он остается в git-базе и может быть снова доступен после создания новой ссылки на тот же SHA.

Эндпоинт запрещает удалять следующие ссылки:

  1. Default branch — основную ветку репозитория нельзя удалить через API.
  2. Protected branch — ветку с защитой нужно сначала разблокировать через настройки репозитория.
  3. Тег, привязанный к release — необходимо сначала удалить связанный релиз.

Параметры URL

ПараметрОбязательныйОписание
usernameДаИмя владельца репозитория (пользователь или организация)
reponameДаНазвание репозитория без расширения .git
refДаИмя ссылки без префикса refs/. Примеры: heads/test, tags/v1.0.0, custom/my-ref

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

Данный метод не принимает параметров в строке запроса.

Тело запроса

Не требуется.

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

# Удалить ветку test-branch
curl -X DELETE "https://api.gitverse.ru/repos/user/APInewTestRepo/git/refs/heads/test-branch" \
  -H "Authorization: Bearer YOUR_TOKEN"
 
# Удалить тег v0.9.0-beta
curl -X DELETE "https://api.gitverse.ru/repos/user/APInewTestRepo/git/refs/tags/v0.9.0-beta" \
  -H "Authorization: Bearer YOUR_TOKEN"
 
# Удалить кастомную ссылку
curl -X DELETE "https://api.gitverse.ru/repos/user/APInewTestRepo/git/refs/custom/my-ref" \
  -H "Authorization: Bearer YOUR_TOKEN"

Ответ (204 No Content)

Ссылка успешно удалена. Тело ответа отсутствует.

Коды ответа

КодСтатусОписание
204No ContentСсылка успешно удалена
409ConflictРепозиторий пуст; либо удаляется тег, привязанный к существующему release
422Unprocessable EntityПараметр ref пуст или имеет некорректный формат; ссылка не существует; попытка удалить default branch; попытка удалить protected branch; попытка удалить системную ссылку
500Internal Server ErrorВнутренняя ошибка при удалении

Примечания

  1. Операция необратима. Восстановить ссылку можно только повторно создав ее через POST /repos/{username}/{reponame}/git/refs с тем же SHA. Если SHA не сохранен — ссылка может быть утеряна.
  2. Удаляется только ссылка. Коммит, на который она указывала, остается в git-базе и может быть удален сборщиком мусора (gc) позднее, если на него никто не ссылается.
  3. Параметр ref передается без префикса refs/: пишите heads/test, не refs/heads/test.
  4. Имя может содержать символы / (для веток вида feature/auth): передавайте как heads/feature/auth.