Теги 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