← Назад к вопросам

Что такое Git tag?

1.7 Middle🔥 131 комментариев
#DevOps и инфраструктура

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Git tag

Git tag — это именованный указатель на конкретный коммит в истории репозитория. Теги используются для отметки важных точек в развитии проекта, таких как релизы, версии или ключевые мильстоуны. В отличие от веток, теги не указывают на ветку и не перемещаются при новых коммитах.

Типы тегов

Lightweight tag (лёгкий тег) — простая метка, которая является ссылкой на коммит. Это буквально сохранённое имя коммита:

git tag v1.0.0

Annotated tag (аннотированный тег) — полноценный объект в Git базе данных с собственным SHA-хешем, автором, датой и сообщением. Рекомендуется использовать для официальных релизов:

git tag -a v1.0.0 -m "Release version 1.0.0"

Основные команды

Создание тега на текущем коммите:

# Лёгкий тег
git tag v1.0.0

# Аннотированный тег
git tag -a v1.0.0 -m "Release version 1.0.0"

Создание тега на конкретном коммите:

# Указываем SHA или любую ссылку на коммит
git tag v1.0.0 abc123def

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

git tag

# Или с фильтром
git tag -l "v1.*"

Просмотр информации о теге:

git show v1.0.0

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

# Локально
git tag -d v1.0.0

# На удалённом репозитории
git push origin --delete v1.0.0

Передача тегов на удалённый сервер:

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

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

# Отправить и теги, и ветки
git push origin --all

Практическое использование в CI/CD

Теги часто используются в pipeline'ах для создания релизов. Например, при push'е тега автоматически запускается сборка и публикация новой версии:

# .github/workflows/release.yml
name: Release
on:
  push:
    tags:
      - 'v*.*.*'
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Build and publish
        run: |
          python -m build
          twine upload dist/*

Сравнение тегов и веток

АспектTagBranch
НазначениеОтметить точку в историиПараллельная разработка
ПеремещениеНет, статиченДвижется при новых коммитах
УдалениеРедкоЧасто
ВерсионированиеДля релизовДля фич/фиксов

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

В экосистеме Python обычно используется формат MAJOR.MINOR.PATCH:

  • MAJOR — несовместимые с прошлой версией изменения (увеличивается при breaking changes)
  • MINOR — добавлены новые функции в обратной совместимости
  • PATCH — исправлены баги

Примеры тегов:

git tag v1.0.0      # Первый релиз
git tag v1.1.0      # Добавлена функция
git tag v1.1.1      # Исправлен баг
git tag v2.0.0      # Breaking changes

Теги — это критически важный инструмент для управления версионированием и CI/CD процессами в любом проекте.