Обычная история: имеем одну мастер ветку, к которой привязаны теги/релизы. Публикуем релиз и начинаем заливать новый код. Вдруг оказывается, что нужно выложить багфикс релиз без новых изменений. Как это лучше организовать?
Очевидный ответ - git-flow. Но он больно сложный, особенно для простых репозиториев и маленькой команды.
Альтернативное решение - stable ветка. То есть master - это у нас develop (в терминологии git-flow), а stable содержит сами релизы.
Соответственно, когда нам нужно сделать хотфикс - мы создаем ветку от stable, фиксим баг, а затем сливаем её со stable и master.
Когда в master набирается достаточно изменений - сливаем их со stable и ставим тег/публикуем релиз.
Какие подводные камни у данного метода? Некоторые советуют по-прежнему использовать merge --no-ff
, но я так и не понял какой от него толк, только коммиты засоряет. А хотелось бы, чтобы stable был зеркальной копией master, только «старой».
PS: использую git уже нацать лет, а он по прежнему как чёрный ящик.