Git Cherry Pick

11 січня 2020 р.

git cherry-pick - ця команда рятує від непорозумінь в гілках між розробниками.

Розглянемо наступну ситуацію. Потрібно зробити деякий немалий функціонал. Для цього зробимо окрему гілку від develop git checkout -b branch-20. З branch-20 будемо робити гілки для нашого фунцціоналу і мерджити ці гілки в branch-20.

Отже створили для гілку для частини функціоналу (ми зараз в branch-20) git checkout -b branch-5
Всі решта розробників теж роблять свої гілки від branch-20.
Ви написали свій код і хочемо створити Merge Request в branch-20. Але виявилось, що колега з незрозумілих причин оновив нашу робочу branch-20 з --force. Тобто у branch-20 оновився хеш і це вже не та branch-20 з якої ми сворили свою branch-5 і ми не зможемо сворити правильний Merge Request

Що робити? По суті нам треба оновити branch-20 (git pull origin branch-20). Сворити нову свою гілку від оновленої branch-20 і якось перенести весь свій новий код.
Нам допоможе команда cherry-pick. Ця команда переносить тільки зміни з одної гілки в іншу.

# переходимо в оновлену branch-20
git checkout branch-20
# створюємо нову гілку для свого коду і переходимо в неї
git checkout -b branch-5v2
# дивимось який і копіюємо хеш старої гілки
git log branch-5
# перекидуємо тільки наші зміни з branch-5 в branch-5v2 в якій ми зараз знаходимось
git cherry-pick 974a7b0d7c195ffa48a1b9c688d83fc73e967d10

Ми перенесли тільки той код, що написали в нову гілку branch-5v2, яку створили з оновленої branch-20. І останнє git push origin branch-5v2

Інші дописи

Git rebase, squash

Отримання змін з головної гілки, об'єднання декількох комітів

Зміна remote's URL

Як змінити remote url в GIT