Допустим, есть бранч develop, от которого сначала отпочковывается бранч release, а спустя еще несколько коммитов — feature branch. Фича доводится до ума и мержится в develop. Однако фича получается настолько хорошей, что ее страшно хочется пропихнуть в release.
Как это правильно сделать?
То есть, грубо говоря, нужно влить в release все коммиты, которые показывает git log develop.., будучи сделанным из feature-branch'а. Очевидно, что можно сделать кучу cherry-pick'ов, или заsquash'ить все нужные коммиты в feature и перенести их уже за один cherry-pick, но это не очень хорошо, т. к. коммиты будут разными, что вызовет немало проблем.
По манам выходит, что можно сделать
git checkout release
git merge-base feature develop # запоминаем "точку ветвления" $BASE
git merge -s ours $BASE # делаем вид, что в release есть все, что в feature на момент ее "отпочковывания" от develop
git merge feature
Чисто теоретически это должно работать, но напрягают дополнительные «левые» merge. Может я чего-то не знаю или делаю что-то не так?