В начальной своей версии наш проект имеет две ветки:
- main
- dev
В эти ветки запрещено вносить изменения без пулл реквеста и вносить их туда напрямую и не нужно
Чтобы реализовать определённую фичу, мы должны отделиться от дев-ветки и уже в отдельной ветке фичи её реализовывать. По окончанию разработки коммит нужно будет слить в dev через pull request
Дальше у нас идёт Release-ветка. В неё мы сливаем те изменения, которые сделали в дев-ветке и которые уже можно пробовать заливать в мастер в качестве отдельной фичи.
В неё мы можем коммитить дополнительные изменения, но это будут только фиксы, если вдруг тестировщики обнаружат, что что-то отвалилось
Если у нас появилась такая проблема, что у нас что-то резко сломалось, то мы можем напрямую отделиться от мэина и реализовать свой хотфикс, который нужно будет залить как в мэин, так и в дев ветку (чтобы не потерять изменения)
Дев ветка должна хранить все изменения проекта !!
Преимущества
- Удобный процесс для код ревью
- Подходит для редких релизов
- Подходит для работы с несколькими командами
Недостатки
- Много merge конфликтов
- Много merge коммитов
- Сложный путь до релиза