Удаление и управление тегами в Git
Ниже описаны основные команды для удаления тегов в Git и различия между лёгкими и аннотированными тегами.
Удаление тегов
1. Локальное удаление тега
git tag -d v0.1.0
Что делает
- Удаляет локальную метку (тег) с именем
v0.1.0из вашего репозитория.
Как это работает “под капотом”
- Git хранит теги как файлы в каталоге
.git/refs/tags/. - Команда удаляет файл:
.git/refs/tags/v0.1.0
- История коммитов не меняется, просто исчезает локальный указатель
v0.1.0.
Пример вывода
$ git tag -d v0.1.0
Deleted tag 'v0.1.0' (was a1b2c3d)
Где a1b2c3d — SHA-1 коммита, на который указывал удалённый тег.
2. Удаление тега на удалённом сервере
git push --delete origin v0.1.0
Что делает
- Удаляет тег
v0.1.0на удалённом репозиторииorigin.
Как это работает “под капотом”
- Git преобразует команду в удалённый запрос удаления рефа:
:refs/tags/v0.1.0
- Отправляет запрос на сервер
origin, где удаляется файлrefs/tags/v0.1.0. - При последующем
git fetchили новом клонировании этот тег больше не будет виден.
Пример вывода
$ git push --delete origin v0.1.0
To [email protected]:yourname/your-repo.git
- [deleted] v0.1.0
3. Полный сценарий: удаление и перевыпуск тега
# 1. Локально удаляем старый тег
git tag -d v0.1.0
# 2. Удаляем его на удалённом сервере
git push --delete origin v0.1.0
# 3. (Опционально) Создаём новый тег на другом коммите
git tag -a v0.1.0 -m "Release version 0.1.0"
# 4. Пушим новый тег на сервер
git push origin v0.1.0
Типы тегов в Git
В Git существуют два основных вида тегов:
- Лёгкие (lightweight) теги
- Аннотированные (annotated) теги
Лёгкий тег (git tag v0.1.0)
git tag v0.1.0
- Ярлык (символьная ссылка) на указанный коммит (по умолчанию на
HEAD). - Не создаёт отдельного объекта в хранилище Git.
- Не содержит метаданных (автор, дата, сообщение).
- Используется для быстрых личных “закладок”.
Аннотированный тег
git tag -a v0.1.0 -m "Release version 0.1.0"
- Создаёт объект типа
tagв.git/objects/…. - Сохраняет:
- Имя автора (tagger) и дату создания.
- Текстовое сообщение описания.
- (Опционально) PGP-подпись (
git tag -s …).
- Рекомендуется для официальных релизов.
Сравнительная таблица
| Характеристика | Лёгкий тег | Аннотированный тег |
|---|---|---|
| Объект в базе данных | Отсутствует | Присутствует (тип tag) |
| Метаданные (автор, дата) | Нет | Да |
| Сообщение | Нет | Да (через -m) |
| Возможность GPG-подписи | Нет | Да (ключ -s) |
Вывод git show <tag> |
Показывает сразу коммит | Сначала показывает данные тега, затем коммит |
Итог
git tag v0.1.0— лёгкий, простой указатель без описания и метаданных.git tag -a v0.1.0 -m "…"— документированная, полнофункциональная и (опционально) подписанная метка, идеальная для релизов.
No Comments