git rev-list --reverse --topo-order master... | while read rev; do git checkout preview; git cherry-pick $rev || break; done
Команда git rev-list --reverse --topo-order master...
выдаёт список коммитов, начиная от самого старого до самого нового в ветке master
. Затем, эта информация передается в цикл while read rev; do git checkout preview; git cherry-pick $rev || break; done
.
Внутри цикла, выполнение команды git checkout preview
переключается на ветку preview
. Затем, команда git cherry-pick $rev
копирует каждый коммит из ветки master
в ветку preview
. Если cherry-pick выполнится успешно, то переходим к следующему коммиту. Если происходит ошибка в cherry-pick (к примеру, конфликт слияния), то цикл прерывается с помощью break
.
Эта команда полезна, когда нужно перенести диапазон коммитов с конца ветки master
в другую ветку preview
. Альтернативным подходом может быть использование git rebase
для переоснования ветки preview
на master
.