Выбор диапазона коммитов с помощью cherry-pick или rebase - приводит к тому же результату?
Иногда я хочу выбрать диапазон коммитов из другого хранилища. Я знаю два способа сделать это.
1.
git checkout myBranch
git cherry-pick begin..end
или же
git rebase --onto myBranch begin end
Я считаю, что первую версию легче запомнить. Тем не менее, я много читал о том, как сбор вишни является злом по сравнению со слиянием, потому что это как бы ломает историю. Но что я еще не понял, так это то, есть ли разница между выбором вишни из ряда коммитов или их перебазированием с помощью --onto
Я склонен думать, что не должно быть разницы. Я ошибаюсь?
3 ответа
Эти две команды эквивалентны, вы просто выполняете работу, которую обычная перебазировка выполняла бы, чтобы выяснить необработанные коммиты для воспроизведения в целевой ветви.
Перебазирование и сбор вишни так же "плохи" для слияний. Они оба приводят к тому, что забываются идентификаторы исходных коммитов для изменений, которые вы получаете; в результате, последующие слияния могут попытаться применить одни и те же изменения более одного раза.
Собственно, сбор вишни в этом отношении менее вреден, чем перебазирование. Сбор вишни создаст дубликаты коммитов, а перебазирование фактически переместит их (таким образом, переписав историю).
Оба они более злые, чем слияния, что, по моему честному мнению, обычно является худшим выбором.