112 lines
6.5 KiB
Markdown
112 lines
6.5 KiB
Markdown
# Соглашение о коммитах
|
||
|
||
Расширенное соглашение, основанное на ["Соглашении о коммитах" 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"_
|
||
|