Выбор диапазона коммитов с помощью cherry-pick или rebase - приводит к тому же результату?

Иногда я хочу выбрать диапазон коммитов из другого хранилища. Я знаю два способа сделать это.

1.

git checkout myBranch
git cherry-pick begin..end

или же

  1. git rebase --onto myBranch begin end

Я считаю, что первую версию легче запомнить. Тем не менее, я много читал о том, как сбор вишни является злом по сравнению со слиянием, потому что это как бы ломает историю. Но что я еще не понял, так это то, есть ли разница между выбором вишни из ряда коммитов или их перебазированием с помощью --onto

Я склонен думать, что не должно быть разницы. Я ошибаюсь?

3 ответа

Решение

Эти две команды эквивалентны, вы просто выполняете работу, которую обычная перебазировка выполняла бы, чтобы выяснить необработанные коммиты для воспроизведения в целевой ветви.

Перебазирование и сбор вишни так же "плохи" для слияний. Они оба приводят к тому, что забываются идентификаторы исходных коммитов для изменений, которые вы получаете; в результате, последующие слияния могут попытаться применить одни и те же изменения более одного раза.

Собственно, сбор вишни в этом отношении менее вреден, чем перебазирование. Сбор вишни создаст дубликаты коммитов, а перебазирование фактически переместит их (таким образом, переписав историю).

Оба они более злые, чем слияния, что, по моему честному мнению, обычно является худшим выбором.

Другие вопросы по тегам