- Никогда не используйте merge, только rebase для сохранения линейной истории коммитов
- Осторожно с изменениями в чужих ветках. Придется больно и мучительно делать rebase. Лучше не трогайте чужие ветки
- Перепроверьте историю коммитов перед созданием пулл реквеста
- Каждый коммит должен быть осознанным и быть одним логическим элементом
- Каждый пулл реквест должен быть осознанным и быть одним логическим элементом
- Перепроверьте, что вы в правильной ветке, никогда не коммитьте напрямую в main
Коммиты добавляются в соответствии с conventional commits. Т.е
<type>(<scope>): <body>.
Поле <type> должно принимать одно из этих значений:
featдля добавления новой функциональностиfixдля исправления бага в программеrefactorдля рефакторинга кода, например, переименования переменнойperfдля изменения кода, повышающего производительностьtestдля добавления тестов, их рефакторингаstructдля изменений связанных с изменением структуры проекта (НО НЕ КОДА), например изменение расположения папокciдля различных задач ci/cdremoveдля удаления
Поле <scope> опционально и показывает к какому модулю, классу, методу функции и т.п применены изменения.
Поле <body> содержит суть изменений в повелительном наклонении настоящего времени на английском языке без точки в
конце, первое слово - глагол с большой буквы. Текст сообщения должен включать мотивацию к изменению и контрасты с
предыдущим поведением.
Примеры:
- Хорошо: "Add module for future BST implementations"
- Плохо: "Added module for future BST implementations."
- Плохо: "Adds module".
- Очень плохо: "new bug."
- Из ветки
developсоздается веткаrelease. - Из ветки
developсоздаются веткиfeature. - Когда работа над веткой
featureзавершается, она сливается в веткуdevelop. - Когда работа над веткой
releaseзавершается, она сливается с веткамиdevelopиmain. - Если в ветке
mainобнаруживается проблема, изmainсоздается веткаhotfix. - Когда работа над веткой
hotfixзавершается, она сливается с веткамиdevelopиmain.
Ветка под одно (большое) логическое изменение. Формат для веток <type>/<short-body>. Тип аналогичен тому же в
коммитах,
а <short-body> представляет собой короткое описание назначения ветки в kebab-case стиле.
Примеры хороших названий:
feat/add-avl-treeci/add-klint
После одобрения пулл реквеста, ветка удаляется. А новая функциональность разрабатывается в новой ветке.
Формат для веток hotfix/<short-body>. Где <short-body> представляет собой короткое описание назначения ветки в
kebab-case стиле.
Ветка hotfix создается только из ветки main