На двух разных проектах удалось познакомиться с двумя способами работы с git в проекте
Git Flow
Ветки
- Develop (ветка в которой ведётся разработка)
- Ветки фич (создаются от develop и вливаются в него же)
- Ветки Release (в какой то момент создаются от develop, правки и доработки производятся в них, затем вливаются в develop и master)
- Master (основная ветка с релизами)
- Ветки Hotfix (если в каком то релизе найден баг, то от мастера с нужными коммитом создаётся hotfix ветка, после доработок, hotfix так же вливается в develop и master)
Подходит если
- У вас редкие релизы
- Нужно версионирование
- Нужно откатываться или куда то поставлять более старые версии
Недостатки
- Огромное количество мерджей
- Важный код может быть в release ветке и не быть в develop
Github Flow
От мастер ветки создаётся feature ветка, она тестируется, если всё ок - вливается в master - релиз.
Подходит если
- У вас стартап
- Релизы много раз в день
- Всё идёт только вперёд, версионирование старого кода не нужно
Суровых недостатков не назову