Теги Git, релизы и журнал изменений: чистая публикация версий
Коротко: Теги помечают определённые коммиты как версию, релизы объединяют их с пояснениями и файлами, а журнал изменений (changelog) описывает пользователям, что изменилось.
Подробнее: Версия ПО — это однозначно названное состояние кода. Для этого используют теги Git, номера версий (SemVer) и заметки о выпуске.
Подробности
Теги
git tag v1.4.0 # лёгкий тег
git tag -a v1.4.0 -m "Version 1.4.0" # аннотированный тег (с автором, датой, сообщением)
git push origin v1.4.0 # опубликовать тег (теги не отправляются автоматически)
git tag -l 'v1.*' # список тегов
git checkout v1.4.0 # посмотреть это состояние
git tag -d v1.4.0 # удалить локальноТеги — неизменяемые метки (не перемещайте их после публикации). Для релизов используйте аннотированные (и по возможности подписанные, -s) теги.
Номера версий
Семантическое версионирование: MAJOR.MINOR.PATCH (например, 2.3.1): MAJOR — за несовместимые изменения, MINOR — за новые совместимые функции, PATCH — за исправления ошибок. Предрелизы: 2.0.0-beta.1. Альтернатива CalVer (2026.03). Номер появляется в теге, файле пакета (package.json, pyproject.toml) и релизе.
Релизы и журнал изменений
На GitHub/GitLab релиз (release) создаёт из тега страницу с описанием, файлами для скачивания (artifacts) и автоматически сформированными заметками. CHANGELOG.md (формат «Keep a Changelog») структурируется по версиям на Added, Changed, Deprecated, Removed, Fixed, Security и адресован пользователям, а не разработчикам (не вставляйте просто список коммитов). С Conventional Commits и инструментами (release-please, semantic-release, changesets) версии и журнал изменений можно создавать автоматически.
Порядок и советы
- Тесты зелёные, повысить версию, дополнить журнал изменений.
- Закоммитить, поставить тег, push.
- CI собирает артефакты (пакеты, образы контейнеров) и публикует (npm, PyPI, реестр Docker), в идеале воспроизводимо и с подписью.
- Написать заметки о выпуске, чётко выделить несовместимые изменения и дать заметки по миграции.
- При ошибках новая патч-версия вместо перемещения тега.
Для сайтов часто достаточно деплоя на каждый коммит; теги/релизы важны для библиотек, приложений и инструментов, которые устанавливают другие.
См. также: Семантическое версионирование, Conventional Commits, Конвейер CI/CD, Файл README