Cherry Picking sa Gitom

Upravljanje promenama grana funkcija koje nisu sasvim spremne za potpuno spajanje može biti težak zadatak. Ponekad ne želite da gurnete celu granu u drugu, već treba da odaberete samo nekoliko određenih zaveza. Ovaj proces se naziva cherry-picking.

Zašto cherry-picking?

Pogledajmo sledeći scenario koji će olakšati razumevanje načina rada cherry picking.

Implementiramo nove funkcije za sledeći nedeljni sprint. Jednom kada kod bude spreman, prosledićemo ga razvojnoj grani i otvoriti ga u sledećem javnom izdanju kada sve bude testirano.

Ali, klijent nije zadovoljan svim promenama i traži da uvedemo samo određene. Budući da nisu prihvaćene sve funkcije za sledeće izdanje, git merge ili git rebase neće dati željene rezultate, jer će obuhvatiti sve promene napravljene u poslednjem sprintu.

Cherry pick je pravi odgovor! Fokusira se samo na promene uključene u commit koje implementiraju željene funkcije bez donošenja drugih commit-ova.

Postoji mnogo drugih upotreba koje ovaj alat može da ponudi:

  • Od ključne je važnosti kada je reč o ispravljanju grešaka, jer se greške popravljaju i testiraju u razvojnoj grani sa njihovim pojedinačnim urezima.
  • Možete izbeći nepotrebne konflikte koristeći git cherry-pick umesto drugih opcija koje takođe primenjuju promene iz datog urezivanja, kao što je [git diff](https://kolosek.com/git-commands-tutorial-part1/).
  • Korisna alatka kad god potpuno spajanje grana nije moguće zbog nekompatibilnih verzija u različitim granama.
  • git cherry-pick se koristi za uvođenje promena u podgranu, bez promene grane.

Kako raditi Cherry Pick?

Hajde da koristimo cherry pick za commit na razvojnu granu i dodamo ga u feature granu pomoću feature hash-a.

Želimo da odaberemo commit C od master-a. Postoji nekoliko koraka koje biste trebali slediti da biste obavili posao:

  1. Nabavite commit hash. To možete učiniti na dva načina:
    • Upisujući git log --oneline, da biste dobili dnevnik vaše istorije komitovanja. Uverite se da ste na ispravnoj grani: git checkout master.
    • Izborom commit hash-a sa GitHub stranice.
  2. Checkout u granu u koju želite da ubacite urezivanje, u našem slučaju ovo je feature grana: git checkout feature.
  3. Cherry pick commit: git cherry-pick C.

Ako pokrenete git log, videćete da je naš cherry pick commit na vrhu feature grane. Imaće nove i drugačije commit hash-ove.

Saveti i trikovi

Ako želite da odaberete više od jednog commit-a odjednom, možete dodati njihove hesh-ove odvojene razmakom: git cherri-pick C D.
Možete da spojite cherry-pick umesto commit-a: git cherri-pick -m 1 <merge_hash>. Budite oprezni! Poželjno je koristiti git merge umesto git cherry-pick. Kada cherry-pick spojite, on sužava sve promene napravljene u tom jednom commit-u. Gubite istoriju commit-ova.

Budite oprezni kada koristite cherry pick i na mnogo commit-ova. Nova sekvenca odražava način na koji ste upotrebili cherry-pick, a ne hronološki redosled originalnih commit-ova.

Zaključak

Cherry picking se obično obeshrabruje u zajednici programera. Glavni razlog je taj što stvara duplikate commit-ova i gubite mogućnost praćenja istorije commit-ova. Uvek biste trebali da koristite git merge.

Merging nearby nadvlada cherry picking. Ali vredi pogledati ovu jedinstvenu Git feature! Podelite svoje iskustvo sa nama.

Predstojeća cherry picking sezona obeležava novu listu budućih članaka! Pretplatite se da biste bili u toku!