EMZETT.
Войти

Теги 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) версии и журнал изменений можно создавать автоматически.

Порядок и советы

  1. Тесты зелёные, повысить версию, дополнить журнал изменений.
  2. Закоммитить, поставить тег, push.
  3. CI собирает артефакты (пакеты, образы контейнеров) и публикует (npm, PyPI, реестр Docker), в идеале воспроизводимо и с подписью.
  4. Написать заметки о выпуске, чётко выделить несовместимые изменения и дать заметки по миграции.
  5. При ошибках новая патч-версия вместо перемещения тега.

Для сайтов часто достаточно деплоя на каждый коммит; теги/релизы важны для библиотек, приложений и инструментов, которые устанавливают другие.

См. также: Семантическое версионирование, Conventional Commits, Конвейер CI/CD, Файл README