В чем разница между 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