← Назад к вопросам

Что такое Conventional Commits?

2.3 Middle🔥 142 комментариев
#JavaScript Core

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое Conventional Commits?

Conventional Commits — это спецификация или набор простых правил для структурирования сообщений коммитов в системах контроля версий (например, Git). Основная цель — стандартизировать формат записей, чтобы сделать историю изменений более понятной, удобной для автоматической обработки и легко читаемой как людьми, так и инструментами. Это соглашение помогает командам поддерживать чистую и осмысленную историю проекта, что особенно критично в крупных проектах с множеством участников.

Ключевые элементы формата

Стандартное сообщение коммита в Conventional Commits состоит из нескольких обязательных и опциональных частей:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]
  • <type> — тип изменений, который указывает на характер внесённых модификаций. Это ядро спецификации. Наиболее распространённые типы:

    • feat — новая функциональность (соответствует semantic versioning — увеличивает MINOR версию).
    • fix — исправление ошибки (увеличивает PATCH версию).
    • docs — изменения в документации.
    • style — правки, связанные со стилизацией кода (например, форматирование, пробелы), не влияющие на логику.
    • refactor — рефакторинг кода без изменения поведения.
    • test — добавление или изменение тестов.
    • chore — рутинные задачи, например, обновление зависимостей, настройка инструментов.
  • [optional scope] — необязательная область изменений, которая уточняет, какая часть проекта затронута. Указывается в круглых скобках после типа. Например: feat(ui): или fix(api):.

  • <description> — краткое описание изменений в повелительном наклонении (например, "добавить", "исправить", а не "добавлено", "исправлено").

  • [optional body] — необязательное подробное описание изменений, их мотивации или контекста. Отделяется от описания пустой строкой.

  • [optional footer(s)] — необязательные сноски, например, ссылки на задачи (Closes #123) или указание на критичные изменения (BREAKING CHANGE:).

Примеры коммитов

# Простой коммит с новой функциональностью
feat: добавить поддержку тёмной темы

# Исправление с указанием области
fix(auth): исправить утечку памяти при валидации токена

# Коммит с описанием и сноской на задачу
refactor(config): перейти на YAML для конфигурации

Перенести все конфигурационные файлы из JSON в YAML для улучшения читаемости.

Closes #45

Преимущества использования

  1. Автоматическая генерация CHANGELOG — инструменты (например, standard-version или semantic-release) могут анализировать историю коммитов и автоматически формировать журнал изменений, группируя правки по типам.
  2. Упрощение семантического версионирования (SemVer) — тип коммита (feat, fix) напрямую указывает, какую часть версии следует увеличить (MINOR или PATCH).
  3. Повышение читаемости истории — любой разработчик может быстро понять, что было сделано в каждом коммите, без необходимости изучать диффы.
  4. Автоматизация рабочих процессов — можно настраивать CI/CD пайплайны, которые по типу коммита запускают определённые сценарии (например, публикация новой версии при наличии feat).
  5. Лучшая командная коммуникация — стандартизация уменьшает недопонимание и дисциплинирует разработчиков.

Инструменты и интеграция

Для соблюдения конвенции используются линтеры (например, commitlint), CLI-утилиты (например, commitizen для интерактивного создания коммитов) и хуки Git (pre-commit или commit-msg). Многие популярные проекты (Angular, Vue.js, Jest) приняли эту спецификацию, что подтверждает её практическую ценность.

Conventional Commits — это не просто формальность, а важная практика, которая превращает историю Git в структурированную и содержательную документацию проекта, упрощая его поддержку и развитие.

Что такое Conventional Commits? | PrepBro