Що таке git cherry-pick і коли його використовувати?
git cherry-pick бере зміни з конкретного коміту і застосовує їх до поточної гілки, створюючи новий коміт з тими самими змінами. Це корисно, коли потрібно перенести окрему зміну, не об'єднуючи всю гілку.
Коли використовувати: ви зробили fix у feature-гілці, але він потрібен і в main — cherry-pick переносить лише цей коміт. Або ви випадково закомітили в wrong branch — cherry-pick переносить коміт у правильну гілку. Також для перенесення hotfix між релізними гілками: cherry-pick fix з main в release-1.2.
Як використовувати: переключіться на цільову гілку (git checkout main), потім git cherry-pick <commit-hash>. Git застосує зміни з вказаного коміту і створить новий коміт у поточній гілці. Хеш нового коміту буде іншим, але зміни і повідомлення — ті самі. Можна перенести кілька комітів: git cherry-pick <hash1> <hash2> <hash3> або діапазон: git cherry-pick <hash1>..<hash2>.
Конфлікти при cherry-pick: якщо код навколо змін відрізняється між гілками, виникне конфлікт. Вирішіть його як при звичайному merge: відредагуйте файли, git add, git cherry-pick --continue. Для скасування: git cherry-pick --abort.
Відмінність від merge: merge об'єднує всю гілку з усіма комітами. cherry-pick переносить лише вказані коміти. Відмінність від rebase: rebase переносить усі коміти гілки поверх іншої. cherry-pick — точкове перенесення.
Обережність: cherry-pick створює дублікат коміту з новим хешем. Якщо пізніше зробити merge гілки, з якої був cherry-pick, можливі конфлікти через однакові зміни. Намагайтеся cherry-pick лише коли merge або rebase неможливі або недоцільні.
Практичний сценарій: ви виправили критичний баг у develop, але його потрібно терміново доставити в main. git checkout main, git cherry-pick <fix-commit-hash>, git push. Fix в main без merge всієї develop-гілки.