Теги и релизы
Тема дорожной карты · Изучи Git
Теги в Git — это метки, которые позволяют закрепить имя за конкретным коммитом. Они часто используются для отслеживания релизов (v1.0.0) или других важных точек в истории проекта. Теги бывают двух типов: легковесные и аннотированные. Легковесные теги (git tag v1.0.0) представляют собой простое имя для коммита и не содержат дополнительной информации. Аннотированные теги (git tag -a v1.0.0 -m "...") — это полноценные объекты с метаданными, включая автора, дату, сообщение и опциональную GPG/SSH-подписью (-s). Для релизов всегда предпочтительны аннотированные теги, так как они содержат больше информации и могут быть использованы в команде git describe для получения подробной информации о версии.
Теги по умолчанию не пушатся на удаленный репозиторий: для этого необходимо использовать команду git push --tags, которая отправит все теги, или явно указать тег для отправки, например, git push origin v1.0.0. CI-конвейеры релизов обычно запускаются на событии push тегов, что позволяет автоматически сопровождать релизы и управлять ими.
Как это работает
Теги и релизы в Git используются для отслеживания различных версий проекта. Легковесные теги (git tag v1.0) — это простое имя для коммита, которое не содержит дополнительной информации. Аннотированные теги (git tag -a v1.0 -m "Release 1.0") — это полноценные объекты, содержащие метаданные, автора, опциональную подпись и могут быть использованы в различных командах Git для получения дополнительной информации. Для отправки тегов на удаленный репозиторий используется команда git push origin <tag> или git push --tags, которая отправит все теги. Теги — это стандартный способ пометки релизов, особенно при использовании конвенциональной версионной системы (CalVer) или семантической версионной системы (SemVer). Удаление тегов производится с помощью команды git tag -d <tag> для локального удаления и git push origin :refs/tags/<tag> для удаления тега на удаленном репозитории.
Когда применять
Аннотированные и подписанные теги используются для релизов, так как они содержат информацию об авторе, дате и сообщении. Семантическая версионная система (v1.2.3) или конвенциональная версионная система (v2026.05.15) используются для консистентного отслеживания версий. Микс этих систем может вызвать проблемы с версионированием. Push тегов производится явно; многие CI-пайплайны триггерят на событии push тега, что позволяет автоматически запускать процессы релиза.
Типичные ошибки
Теги и релизы могут быть источником различных проблем. Одной из распространенных ошибок является удаление опубликованного тега, так как клиенты могут иметь этот тег в кеше, что приводит к проблемам с версионированием. Другой распространенной ошибкой является переиспользование имени тега, что может привести к путанице и проблемам с отслеживанием версий. Легковесные теги для релизов также могут быть проблематичны, так как они не содержат метаданных и не предоставляют аудит-трейл.