Перейти к содержанию

Теги (Tags)

Теги используются для отметки важных точек в истории репозитория, обычно для версий релизов (v1.0, v2.1.3 и т.д.). В отличие от веток, теги не перемещаются — они указывают на конкретный коммит навсегда.

Типы тегов

Легковесные теги (Lightweight)

Просто указатель на коммит, без дополнительной информации.

git tag v1.0.0-beta

Аннотированные теги (Annotated)

Рекомендуемый тип для релизов. Содержит: - Имя тегирующего. - Email. - Дату. - Сообщение тега.

git tag -a v1.0.0 -m "Релиз версии 1.0.0"

Работа с тегами

Просмотр тегов

# Все теги
git tag

# Теги, соответствующие шаблону
git tag -l "v1.*"

# Информация о конкретном теге
git show v1.0.0

Создание тега

На текущий коммит:

git tag -a v1.0.0 -m "Стабильный релиз"

На конкретный коммит:

git tag -a v0.9.0 a1b2c3d -m "Бета-версия"

Отправка тегов на сервер

По умолчанию git push не отправляет теги.

# Отправить один тег
git push origin v1.0.0

# Отправить все теги
git push --tags

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

Локально:

git tag -d v1.0.0

На удаленном сервере:

git push origin --delete v1.0.0

Исправление тега

Если вы ошиблись в сообщении или забыли добавить -a:

# Удалить старый тег
git tag -d v1.0.0

# Создать новый
git tag -a v1.0.0 -m "Исправленное сообщение"

Если тег уже отправлен на сервер, нужно удалить его и там:

git push origin --delete v1.0.0
git push origin v1.0.0

Семантическое версионирование (SemVer)

Рекомендуется использовать формат MAJOR.MINOR.PATCH:

  • MAJOR: Несовместимые изменения API.
  • MINOR: Новая функциональность (обратно совместимая).
  • PATCH: Исправления багов (обратно совместимые).

Примеры: - v1.0.0 — первый стабильный релиз. - v1.0.1 — исправление бага в первой версии. - v1.1.0 — добавлена новая фича. - v2.0.0 — критические изменения, ломающие обратную совместимость.

Префикс v не обязателен, но широко используется.

Проверка подписанных тегов

Для критически важных релизов можно использовать GPG-подписанные теги:

git tag -s v1.0.0 -m "Подписанный релиз"

Проверка подписи:

git tag -v v1.0.0

Частые ошибки

Ошибка: "tag already exists"

Тег с таким именем уже есть. Удалите его и создайте заново или используйте другое имя.

Ошибка при push тегов

Убедитесь, что тег создан на коммите, который уже отправлен на сервер. Если нет:

git push origin main --tags

Назад: Reflog → | Далее: Cherry-pick →