В настоящее время я работаю над проектом с командой, которая использует рабочий процесс git. Это довольно просто, мастер должен находиться в развертываемом состоянии, а ветки используются для создания функций и исправлений. Всякий раз, когда мы дополняем и тестируем функцию или исправление ошибки, мы передаем ее мастеру, как только можем. Идея состоит в том, что ветви должны быть как можно меньше, чтобы было проще объединить их в мастер. У нас есть политика, согласно которой любой код, отправляемый в главную ветвь, должен находиться в состоянии развертывания и проходить тесты.
У нас возникла ситуация, когда один из разработчиков проделал большую работу (несколько месяцев) над одной веткой, и эта ветвь еще не была объединена с мастером. Теперь в этой ветке есть несколько отдельных функций и куча коммитов, по сути, эту ветку действительно следовало объединить уже несколько раз, но пока этого не произошло. Большая часть кода находится в хорошем состоянии с модульными тестами, которые можно объединить обратно в master, но последние изменения, конечно, не должны быть, так как они не завершены и не протестированы.
Как лучше всего справиться с такой ситуацией, когда одна ветвь действительно далеко от других? Какими способами мы можем избежать того, чтобы ветки получали очень большое количество коммитов от мастера в будущем?