Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
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/*
Сравнение тегов и веток
| Аспект | Tag | Branch |
|---|---|---|
| Назначение | Отметить точку в истории | Параллельная разработка |
| Перемещение | Нет, статичен | Движется при новых коммитах |
| Удаление | Редко | Часто |
| Версионирование | Для релизов | Для фич/фиксов |
Семантическое версионирование (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 процессами в любом проекте.