Короткий ответ
Атомарный коммит содержит одно логически законченное изменение, а понятное сообщение коммита объясняет, что и зачем изменено — это упрощает ревью, откат и поиск причины бага в истории.
Как это работает подробнее
Коммит — это единица истории изменений: если в одном коммите смешаны рефакторинг, новая фича и исправление опечатки, откатить или понять только одну часть изменений становится сложно. Атомарность означает, что каждый коммит можно откатить независимо, не сломав остальное, а значит историю изменений можно безопасно использовать как инструмент диагностики, а не только как архив.
Пример кода
example.txt
Плохо:
git commit -m "fix"
Хорошо:
git commit -m "Fix: не учитывался налог при расчёте итоговой суммы заказа\n\n"
"total() игнорировал поле tax_rate, добавлена проверка и тест
test_order_total_includes_tax"Что использовать на практике
- Практика. Сообщение коммита принято писать в повелительном наклонении и кратко: что изменилось и, при необходимости, почему (не «как», это видно из diff). При поиске бага через git bisect или git blame понятные сообщения экономят часы — особенно когда баг возвращается спустя месяцы, а автор изменения уже не помнит деталей. В крупных командах также принято ссылаться в сообщении на номер задачи, чтобы связать код с её описанием и обсуждением.
Подводные камни
- Риски. Частая ошибка — сообщения вида "fix", "wip", "правки", которые не дают никакой информации через полгода. Другая ошибка — объединять в один коммит несвязанные изменения (например, рефакторинг стиля кода и исправление логической ошибки), из-за чего ревьюеру трудно понять суть PR, а откат проблемного коммита случайно отменяет и полезный рефакторинг.