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