Пошук уроків, статей та іншого контенту
Розберіться зі структурою, стилем і правилами написання зрозумілих commit messages.
Commit message — це короткий опис змін, які збережено в коміті. Повідомлення допомагає зрозуміти історію проєкту без перегляду кожного рядка коду.
Хороший commit message відповідає на запитання:
що змінилося;
навіщо це змінили;
який результат має ця зміна.
Зрозумілі повідомлення корисні, коли потрібно:
знайти момент появи певної зміни;
переглянути історію файлу;
швидко зорієнтуватися в роботі іншого розробника;
підготувати опис змін для релізу;
повернутися до попередньої версії.
Порівняйте:
fixВиправлено перевірку порожнього пароля під час входуДруге повідомлення одразу пояснює, що саме було виправлено.
Commit message може складатися з трьох частин:
Короткий заголовок
Розгорнутий опис змін. Тут можна пояснити причину зміни,
важливі технічні деталі або обмеження рішення.
Пов’язана задача: #123Найчастіше достатньо лише заголовка. Тіло повідомлення потрібне для складніших змін.
Заголовок — це короткий опис основної зміни. Він має:
описувати конкретну дію;
бути зрозумілим без додаткового контексту;
не містити зайвих деталей;
зазвичай поміщатися в один рядок.
Приклади:
Додано перевірку формату електронної пошти
Виправлено помилку під час завантаження аватара
Оновлено залежності проєкту
Видалено невикористаний компонентТіло пояснює деталі, які не помістилися в заголовок. Додавайте його, якщо зміна:
має нетривіальну причину;
змінює поведінку системи;
містить компромісне рішення;
може викликати запитання в інших розробників.
Наприклад:
Змінено час очікування запиту до API
Збільшено timeout із 3 до 10 секунд, оскільки запити
до сервісу звітів можуть виконуватися довше під час
формування великих звітів.Тіло варто відділяти від заголовка порожнім рядком. Кожен абзац краще робити коротким, щоб повідомлення було зручно читати в терміналі.
Порівняйте нечітке та конкретне повідомлення:
Зміни в кодіДодано обробку помилки 404 для сторінки профілюУникайте слів, які нічого не пояснюють:
зміни;
оновлення;
виправлення;
робота над функцією;
різні правки.
Такі слова можуть бути частиною повідомлення, але лише разом із конкретизацією:
Оновлено залежності для виправлення вразливостіУ межах одного проєкту повідомлення мають бути оформлені однаково. Наприклад, якщо команда пише повідомлення українською в наказовому стилі, не варто змішувати їх із випадковими англомовними фразами та різними граматичними формами.
Можливі варіанти:
Додати перевірку токена
Виправити обробку відповіді сервера
Оновити документацію APIабо:
Додано перевірку токена
Виправлено обробку відповіді сервера
Оновлено документацію APIОбидва підходи зрозумілі. Важливо обрати один і дотримуватися його.
Один коміт бажано присвячувати одній логічній задачі.
Добре:
Додано кнопку виходу з облікового записуГірше:
Додано кнопку виходу, оновлено залежності, виправлено відступиЯкщо в одному коміті змішані непов’язані зміни, історію складніше читати, а коміт — скасувати або переглянути.
Для простих змін використовуйте один рядок:
Виправлено відображення помилки входуДля складніших змін використовуйте заголовок і тіло:
Змінено повторне надсилання запитів
Клієнт повторює запит не більше двох разів після тимчасової
помилки мережі. Для помилок авторизації повторення не виконується.Заголовок має бути коротким. Часто рекомендують обмежувати його приблизно 50–72 символами, щоб він добре відображався в історії. Це рекомендація, а не вимога Git, але короткі заголовки легше читати.
Найпростіший спосіб передати повідомлення — використати параметр -m:
git add src/login.js
git commit -m "Виправлено перевірку даних форми"Після виконання команди Git створить коміт із цим повідомленням.
Якщо повідомлення має тіло, використайте редактор Git:
git add src/login.js
git commitУ редакторі введіть заголовок, залиште порожній рядок, а потім додайте опис:
Виправлено перевірку даних форми
Порожні значення тепер перевіряються до надсилання
запиту на сервер.Збережіть файл і закрийте редактор. Після цього Git створить коміт.
Переглянути історію комітів можна командою:
git log --onelineПриклад результату:
a13f7c2 Виправлено перевірку даних форми
82b6d11 Додано сторінку профілю
4e91aa0 Створено початкову структуру проєктуПараметр --oneline показує кожен коміт одним рядком. Це зручно для швидкого перегляду заголовків.
Щоб побачити повний опис коміту:
git show a13f7c2Git покаже повідомлення та зміни, які належать цьому коміту.
Повний приклад послідовності команд:
# Додати змінений файл до індексу
git add src/login.js
# Створити коміт із коротким зрозумілим повідомленням
git commit -m "Виправлено перевірку даних форми"
# Переглянути останній коміт і його зміни
git show --stat HEADПеред створенням коміту перевірте:
Яку саме зміну містить коміт?
Чи зрозуміє її людина без перегляду коду?
Чи описує повідомлення головну зміну, а не випадкову деталь?
Чи відповідає стиль повідомлення правилам проєкту?
Чи не змішані в коміті непов’язані зміни?
Корисний шаблон:
[Дія] [об’єкт або частина системи]Наприклад:
Додано фільтрацію списку товарів
Виправлено розрахунок загальної суми
Оновлено текст повідомлення про помилку
Видалено дубльований запит до APIДеякі команди використовують префікси для категоризації комітів:
feat: додано пошук товарів
fix: виправлено перевірку пароля
docs: оновлено документацію
refactor: спрощено обробку відповіді API
test: додано тести для кошика
chore: оновлено залежностіТакий формат часто називають Conventional Commits. Він може бути корисним для командних проєктів і автоматизації, але використовувати його потрібно лише тоді, коли це прийнято в конкретному проєкті.
Не змішуйте формати без потреби:
fix: виправлено помилку
Додано нову кнопку
update thingsКраще дотримуватися єдиного правила для всіх комітів.
ВиправленняТаке повідомлення не пояснює, що саме виправлено.
Краще:
Виправлено помилку форматування дати в профіліТепер користувачі можуть увійтиЦе може бути зрозуміло, але повідомлення точніше описує зміна:
Виправлено обробку відповіді під час входуВиправлено помилку, через яку форма реєстрації іноді не надсилалася після введення некоректного номера телефонуТакий текст складно читати в історії. Частину деталей краще перенести в тіло:
Виправлено надсилання форми реєстрації
Форма більше не блокується після введення некоректного
номера телефону. Повідомлення про помилку показується
до повторного надсилання.Додано кешуванняЯкщо коміт змінює конкретний модуль, краще назвати його:
Додано кешування списку товарівДодано пошук, виправлено меню, оновлено залежностіКраще створити окремі коміти:
Додано пошук товарів
Виправлено відкриття мобільного меню
Оновлено залежності проєктуКоміт можуть читати інші розробники через кілька місяців. Повідомлення на кшталт тут зміни, готово або спроба 2 не допомагають відновити контекст роботи.
Commit message описує зміни, збережені в коміті.
Заголовок має бути коротким, конкретним і зрозумілим.
Для складних змін додавайте тіло повідомлення після порожнього рядка.
Дотримуйтеся єдиного стилю в межах проєкту.
Один коміт бажано присвячувати одній логічній зміні.
Уникайте загальних повідомлень на кшталт fix, update або зміни.
Переглядайте історію через git log --oneline, щоб перевірити зрозумілість заголовків.