Во-первых, создайте несколько веток в своем репо, например:
- master - это тот, который представляет ваш текущий выпуск
- development - это тот, который содержит последние завершенные задачи разработчика (т.е.пользовательские истории)
Когда разработчик начинает работать над новой пользовательской историей, он создает новую ветку из разработки, используя:
git fetch
git checkout develop
(git pull origin develop) <-- only if you are not yet on head of develop
git checkout -b new-feature-branch
Теперь разработчик работает только над этой веткой функций,После завершения своей работы он создает запрос на извлечение из своей функциональной ветви для разработки.Другие разработчики взглянут на него на GitHub, просмотрите его изменения.Если требуется доработка, разработчик продолжает вносить изменения в свою ветвь функций, поскольку запрос на получение обновлений будет обновляться вместе с ним.Если все в порядке, запрос на извлечение объединяется с разработкой.
Время от времени вы объединяете свои изменения от разработки к основному, снова используя запросы на извлечение.Если у вас нет хорошего покрытия тестами и непрерывной интеграции, вам может потребоваться дополнительная ветвь между master и development, чтобы сначала стабилизировать ваш код.
В этой модели предполагается, что ваши ветви функций недолговечны, например 1-2 дня.