# Соглашение о коммитах Расширенное соглашение, основанное на ["Соглашении о коммитах" v1.0.0](https://www.conventionalcommits.org/ru/v1.0.0/). Текущая редакция документа: 2025-07-30. ## Главное - Сообщения коммитов должны быть следующей структуры: ``` <тип>(<необязательный контекст>): <краткое описание> <необязательное тело> <необязательная(ые) сноска(и)> ``` - Первая строка сообщения коммита ("краткое описение") не должна превышать [72 символов](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) ## Тип коммита Стандартный набор типов, предлагаемый настоящим соглашением. | Тип | Назначение | |:-------|:-------------------------------------------------------------------------------------------------------------------------------------| | build | изменения влияющие на сборку проекта | | docs | изменения влияющие на документацию | | add | изменения добавляющие новый функционал или другие особенности | | tweak | изменения влияющие на существующий функционал или на другие особенности | | fix | изменения исправляющие какие-либо ошибки | | remove | изменения удаляющее существующий функционал или другие особенности | | revert | изменения откатывающие изменения другого коммита | | perf | изменения направленные на улучшение производительности (performance) | | refac | изменения НЕ исправляющие ошибки, НЕ добавляющие нового функционала или особенностей и НЕ изменяющие существующей логики функционала | | style | изменения влияющие только на внешний вид кода или документа; форматирование | | test | изменения влияющие на тестирование | ### Breaking change Коммит заканчивающийся восклицательным знаком `!` после **типа** или **контекста** означает, что в коммите введены изменения, которые **ломают обратную совместимость**. Примеры: > refac!: полная реструктуризация проекта > remove(api)!: поддержка API 1.0 ### Merge commit Единственное исключение из общего формата сообщений. Оформляется так, как это делает Git или IDE. ## Контекст коммита Стандартный набор контекстов, предлагаемый настоящим соглашением. | Контекст | Описание | |:---------|:--------------------------------------------------| | git | изменения влияющие на настройки репозитория (Git) | | ide | изменения влияющие на настройки IDE | ## Описание коммита Описание коммита должно быть кратким и записано в повелительном наклонении. Так же следует избегать начинать **краткое описание коммита** со слов "добавлено", "исправлено" и другие, т.к. они уже указаны в **типе коммита**. Рекомендуется формировать **краткое описание** таким образом, чтобы им можно было закончить фразу _"Если этот коммит применить, то будет ..."_ # Примеры **Добавление нового функционала** > add: авторизация пользователя _"Если этот коммит применить, то будет ..."_ _"... добавлена ..."_ _"... авторизация пользователя"_ **Рефакторинг, ломающий обратную совместимость** > refac!: полная реструктуризация проекта _"Если этот коммит применить, то будет ..."_ _"... полная реструктуризация проекта"_ **Поправлен `.gitignore`** > add(git): игнорирование файлов VSCode _"Если этот коммит применить, то будет ..."_ _"... добавлено ..."_ _"... игнорирование файлов VSCode"_ **Изменения в системе сборки проекта** > build: задействован Github Actions _"Если этот коммит применить, то будет ..."_ _"... задействован Github Actions"_ **Удаление поддержки старого API** > remove(api)!: поддержка API 1.0 _"Если этот коммит применить, то будет ..."_ _"... удалена ..."_ _"... поддержка API 1.0"_