Переключение на теги
Тема дорожной карты · Изучи Git
Переключение на теги с помощью команды git checkout v1.0.0 или git switch --detach v1.0.0 переводит репозиторий в состояние detached HEAD, что позволяет собирать, тестировать или просматривать код, но не позволяет вносить изменения, так как новые коммиты не будут привязаны к какой-либо ветке и могут быть потеряны. Чтобы начать вносить изменения от тега, необходимо явно создать новую ветку с помощью команды git checkout -b fix/v1-patch v1.0.0 или git switch -c fix/v1-patch v1.0.0. Этот подход особенно полезен при подготовке hotfix для ранее выпущенной версии, когда основная ветка продолжает развиваться.
Как это работает
Переключение на теги в Git происходит двумя способами: с использованием легковесных тегов (git tag v1.0) и аннотированных тегов (git tag -a v1.0 -m "Release 1.0"). Легковесные теги представляют собой простое имя для коммита, в то время как аннотированные теги являются полноценными объектами Git с метаданными, автором, датой и опциональной подписью. Теги можно отправить в удалённый репозиторий с помощью команд git push origin <tag> или git push --tags. Теги являются стандартным способом пометки релизов, особенно при использовании версионирования SemVer или CalVer. Удаление тегов происходит с помощью команд git tag -d <tag> для локального репозитория и git push origin :refs/tags/<tag> для удалённого репозитория.
Когда применять
Аннотированные и подписанные теги используются для релизов, так как они содержат информацию об авторе, дате, сообщении и (при наличии подписи) подлинности. Версионирование SemVer (v1.2.3) или CalVer (v2026.05.15) должно быть последовательным, чтобы избежать конфликтов и сложностей при управлении версиями. Отправка тегов должна быть явной, так как многие CI-пайплайны триггерят выполнение задач при отправке тега.
Типичные ошибки
При работе с тегами часто встречаются следующие ошибки: удаление опубликованного тега, которое может привести к тому, что клиенты, использующие кеш, не смогут получить доступ к архиву версий; переиспользование имени тега, что может привести к конфузии и потере истории версий; использование легковесных тегов для релизов, что приводит к отсутствию метаданных и аудита.