Удаление и управление тегами в 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