Як користуватися git cherry-pick: детальна інструкція

🔹 Що таке 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 можна використовувати:

  1. git merge – якщо потрібно взяти всі зміни з гілки, а не окремі коміти.
  2. git rebase – якщо потрібно перетягнути всі коміти на іншу гілку.
  3. 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 у своїй роботі! 🚀

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *