Skip to main content

Удаление и управление тегами в Git

Ниже описаны основные команды для удаления тегов в Git и различия между лёгкими и аннотированными тегами.


Удаление тегов

1. Локальное удаление тега

git tag -d v0.1.0

Что делает

  • Удаляет локальную метку (тег) с именем v0.1.0 из вашего репозитория.

Как это работает “под капотом”

  1. Git хранит теги как файлы в каталоге .git/refs/tags/.
  2. Команда удаляет файл:
   .git/refs/tags/v0.1.0
  1. История коммитов не меняется, просто исчезает локальный указатель 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.

Как это работает “под капотом”

  1. Git преобразует команду в удалённый запрос удаления рефа:
   :refs/tags/v0.1.0
  1. Отправляет запрос на сервер origin, где удаляется файл refs/tags/v0.1.0.
  2. При последующем 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 существуют два основных вида тегов:

  1. Лёгкие (lightweight) теги
  2. Аннотированные (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 "…" — документированная, полнофункциональная и (опционально) подписанная метка, идеальная для релизов.