PassFront
  1. PassFront
  2. База знаний
  3. Слияние, rebase и конфликты

В чем разница между merge и cherry-pick?

Слияние, rebase и конфликты

`git merge` объединяет ветку целиком, `git cherry-pick` переносит отдельные коммиты.

merge

git switch main
git merge feature
  • в текущую ветку приходят все коммиты feature;
  • при расхождении историй создаётся merge-коммит;
  • Git знает, что ветки объединены, и при следующем merge не будет дублей.

cherry-pick

git switch main
git cherry-pick abc1234
  • в текущую ветку переносятся изменения только выбранного коммита;
  • создаётся новый коммит с другим хешем — Git не связывает его с исходным;
  • если потом слить всю ветку, возможны повторные изменения и конфликты.

Когда что

  • готовая ветка целиком — merge;
  • один хотфикс в релизную ветку или коммит, сделанный не в той ветке, — cherry-pick.

Коротко для собеседования

merge вливает всю ветку и сохраняет связь историй, cherry-pick копирует отдельные коммиты новыми коммитами без связи с исходными.

Подробнее: Git — git cherry-pick

Другие вопросы раздела