Я работаю с ситуацией, аналогичной той, которая у вас сейчас есть. Мне было поручено найти «лучшее» решение, и оно соответствовало следующему.
Активная ветвь представляет серверы в их текущем состоянии.
Любая работа по разработке должна выполняться в ветке, взятой из live. Это может быть полчаса работы одного человека или годовой многопрофильный проект. Как бы часто это ни происходило, изменения в жизни могут быть объединены в эти ветви развития.
Перед тем, как произведение выходит в эфир, изменения из живого снова объединяются и помечаются как потенциальный выпуск. Этот выпуск тестируется в промежуточной среде, и если он проходит тестирование, новый тег берется из тега.
Можно объединить несколько работ в один выпуск, если это работает лучше.
Это означает, что довольно просто поддерживать ветки разработки в актуальном состоянии, и если часть работы в процессе разработки отбрасывается, это требует минимальной уборки.
Чтобы перейти от работы над одним проектом к другому, разработчик может просто переключить свою локальную рабочую среду в другую ветвь.
Одна из проблем, которые у нас возникли с системой, которую вы описываете, заключается в том, что DEV может довольно быстро устареть с PROD, поэтому вы не развиваетесь в прямом эфире и не легко обнаружить взаимозависимости до стадии. Приведенное выше решение решает эти проблемы, оставаясь при этом довольно легковесным.