🔹 Що таке git cherry-pick
?
git cherry-pick
– це команда в Git, яка дозволяє вибірково застосувати один або кілька конкретних комітів з однієї гілки в іншу. Це особливо корисно, коли потрібно взяти зміни з одного коміту без необхідності об’єднувати всю гілку.
🛠 Коли використовувати git cherry-pick
?
- Виправлення помилки, яка була виправлена в іншій гілці, але ще не застосована в потрібній.
- Взяття лише певних змін із фічевої гілки, без злиття всієї гілки.
- При роботі з релізами, коли потрібно перенести виправлення багів у старі версії.
🔹 Як використовувати git cherry-pick
?
1️⃣ Переконайтесь, що знаходитеся в правильній гілці
Перед тим як застосовувати команди, спершу перейдіть у потрібну гілку, куди потрібно додати коміт:
git checkout target-branch
або (в нових версіях Git)
git switch target-branch
Якщо ви ще не оновили гілку, зробіть це:
git pull origin target-branch
2️⃣ Дізнайтеся хеш потрібного коміту
Перейдіть у гілку, де знаходиться коміт, та знайдіть його хеш:
git log --oneline
Приклад виводу:
d4f6b12 Fix bug in authentication
a1b2c3d Add new feature
c4d5e6f Refactor login module
У цьому випадку коміт d4f6b12
– це той, який ми хочемо перенести.
3️⃣ Виконання git cherry-pick
Перейдіть назад у потрібну гілку (target-branch
) і застосуйте коміт:
git cherry-pick d4f6b12
Якщо все пройшло добре, ви побачите щось на кшталт:
[target-branch abc1234] Fix bug in authentication
Тепер цей коміт застосований до вашої поточної гілки.
🔹 Робота з кількома комітами
🔄 Cherry-pick кількох комітів:
Якщо потрібно перенести одразу кілька комітів, передайте їхні хеші через пробіл:
git cherry-pick d4f6b12 a1b2c3d
🔄 Cherry-pick діапазону комітів:
Якщо потрібно перенести кілька комітів підряд, можна вказати діапазон:
git cherry-pick start_commit^..end_commit
Наприклад, якщо потрібно взяти всі коміти від a1b2c3d
до d4f6b12
, виконайте:
git cherry-pick a1b2c3d^..d4f6b12
💡 ^
означає “включити попередній коміт”, тому a1b2c3d^..d4f6b12
захоплює a1b2c3d
, c4d5e6f
і d4f6b12
.
🔹 Вирішення конфліктів при cherry-pick
Якщо зміни з коміту конфліктують із поточною гілкою, Git зупинить cherry-pick і видасть повідомлення про конфлікт:
error: could not apply d4f6b12... Fix bug in authentication
1️⃣ Перевірте конфлікти:
git status
2️⃣ Виправте файли вручну та позначте їх як готові до коміту:
git add <file>
3️⃣ Продовжіть cherry-pick:
git cherry-pick --continue
4️⃣ Якщо потрібно скасувати cherry-pick (наприклад, якщо конфлікти занадто складні):
git cherry-pick --abort
🔹 Додаткові корисні опції
📝 Використання -x
для вказування оригінального коміту
Щоб при cherry-pick у повідомленні коміту зберегти посилання на оригінальний коміт, використовуйте:
git cherry-pick -x d4f6b12
Це додасть рядок Cherry-picked from commit d4f6b12
до повідомлення.
🔹 Альтернативи git cherry-pick
🔄 Замість cherry-pick
можна використовувати:
git merge
– якщо потрібно взяти всі зміни з гілки, а не окремі коміти.git rebase
– якщо потрібно перетягнути всі коміти на іншу гілку.git format-patch
+git apply
– для створення патчів і ручного застосування.
🔹 Висновок
git cherry-pick
– це потужний інструмент для вибіркового перенесення змін. Основні кроки:
✅ Перейти у потрібну гілку (git checkout target-branch
)
✅ Дізнатися хеш коміту (git log --oneline
)
✅ Виконати git cherry-pick <commit_hash>
✅ Вирішити конфлікти, якщо вони є (git cherry-pick --continue
або git cherry-pick --abort
)
Тепер ви готові ефективно використовувати git cherry-pick
у своїй роботі! 🚀