[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-git-chto-takoe-git-tag-i-zachem-nuzhny-tegi":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":17,"progress":18,"seo":19},1336,"chto-takoe-git-tag-i-zachem-nuzhny-tegi",44,"git","Git","📦","Что такое git tag и зачем нужны теги?","git tag — это механизм создания именованных меток, указывающих на конкретные коммиты. Теги используются для обозначения релизных версий и важных точек в истории проекта.\n\n### Виды тегов\n\n| Тип | Описание | Команда |\n|---|---|---|\n| Lightweight (лёгкий) | Просто указатель на коммит (как неподвижная ветка) | `git tag v1.0.0` |\n| Annotated (аннотированный) | Полноценный объект Git с автором, датой, сообщением, GPG-подписью | `git tag -a v1.0.0 -m \"Release 1.0.0\"` |\n\n### Основные операции\n\n```bash\n# Создать аннотированный тег\ngit tag -a v2.1.0 -m \"Release 2.1.0\"\n\n# Создать тег для конкретного коммита\ngit tag -a v1.5.0 a1b2c3d -m \"Ретроспективный тег для версии 1.5.0\"\n\n# Список всех тегов\ngit tag\ngit tag -l \"v2.*\"    # фильтр по шаблону\n\n# Информация о теге\ngit show v2.1.0\n\n# Отправить тег на удалённый сервер\ngit push origin v2.1.0\n\n# Отправить все теги\ngit push origin --tags\n\n# Удалить локальный тег\ngit tag -d v2.1.0\n\n# Удалить тег на сервере\ngit push origin --delete v2.1.0\n\n# Переключиться на тег (detached HEAD)\ngit checkout v2.1.0\n```\n\n### Семантическое версионирование (Semantic Versioning)\n\nФормат: `vMAJOR.MINOR.PATCH` (например, `v2.1.3`)\n\n- MAJOR — несовместимые изменения API (breaking changes)\n- MINOR — новая функциональность с обратной совместимостью\n- PATCH — исправления багов с обратной совместимостью\n\n```bash\ngit tag -a v1.0.0 -m \"Initial release\"\ngit tag -a v1.1.0 -m \"Added payment module\"\ngit tag -a v1.1.1 -m \"Fixed payment calculation bug\"\ngit tag -a v2.0.0 -m \"Breaking: new API format\"\n```\n\n### Ключевые моменты\n\n- Для релизов всегда используйте аннотированные теги (`-a`) — они хранят автора, дату и сообщение\n- Теги не перемещаются при новых коммитах (в отличие от веток)\n- `git push` не отправляет теги автоматически — нужен явный `git push --tags` или `git push origin \u003Ctag>`\n- `git checkout \u003Ctag>` приводит к состоянию detached HEAD — для работы нужно создать ветку\n\n### Частые ошибки\n\n- Забывать пушить теги — они остаются только локально\n- Использовать lightweight теги для релизов — теряете информацию об авторе и дате\n- Не следовать семантическому версионированию — усложняет управление зависимостями\n- Перемещать уже опубликованные теги — нарушает воспроизводимость сборок\n\n### Как используется в 2026\n\n- CI\u002FCD пайплайны автоматически запускают сборку и деплой при создании тега (например, `v*` в GitHub Actions)\n- Создание тегов и GitHub Releases автоматизировано через инструменты вроде `semantic-release` и `release-please`\n- Conventional Commits позволяют автоматически определять следующую версию и создавать changelog\n- Container-образы тегируются соответственно Git-тегам для трассируемости деплоев\n\n> **На собеседовании:** подчеркните разницу между lightweight и annotated тегами — для релизов всегда annotated. Покажите знание Semantic Versioning (MAJOR.MINOR.PATCH). Частый вопрос: почему `git push` не отправляет теги автоматически — ответ: теги независимы от веток и требуют явного `git push --tags`.","","junior",[7,15,16],"ci-cd","commands",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":34,"featuredSnippetReady":35},"Что такое git tag и зачем нужны теги — Gymterview","Git теги: lightweight vs annotated, Semantic Versioning (MAJOR.MINOR.PATCH), операции с тегами, автоматизация релизов через CI\u002FCD и semantic-release.","Git теги: Semantic Versioning и автоматизация релизов — Gymterview","Annotated vs lightweight теги, Semantic Versioning (MAJOR.MINOR.PATCH), git push --tags, автоматизация через semantic-release.",[25,26,27,28,29,30,31,32,33],"git tag","теги Git","Semantic Versioning","annotated tag","lightweight tag","версионирование","релиз","CI\u002FCD","собеседование","git tag — механизм именованных меток на коммитах для обозначения релизов. Два вида: lightweight (указатель на коммит) и annotated (полноценный объект с автором, датой, сообщением, GPG-подписью). Для релизов всегда annotated (-a). Semantic Versioning: MAJOR (breaking), MINOR (новая функциональность), PATCH (баг-фиксы). git push не отправляет теги — нужен git push --tags.",true]