git cherry-pick
este o comandă puternică care permite preluarea prin referință a unor comenzi Git arbitrare și adăugarea lor la HEAD-ul de lucru curent. Cherry picking este actul de a alege o confirmare dintr-o ramură și de a o aplica în alta. git cherry-pick
poate fi utilă pentru anularea modificărilor. De exemplu, să spunem că o confirmare este făcută din greșeală în ramura greșită. Puteți trece la ramura corectă și să faceți cherry-pick pentru a duce confirmarea acolo unde ar trebui să aparțină.
Când să folosiți git cherry pick
git cherry-pick
este un instrument util, dar nu întotdeauna o practică optimă. Cherry picking poate cauza comenzi duplicate și multe scenarii în care cherry picking ar funcționa, fuziunile tradiționale sunt preferate în schimb. Acestea fiind spuse, git cherry-pick
este un instrument la îndemână pentru câteva scenarii…
Colaborarea în echipă.
De multe ori o echipă va găsi membri individuali care lucrează în sau în jurul aceluiași cod. Poate că o nouă caracteristică de produs are o componentă backend și frontend. Este posibil să existe un cod partajat între a două sectoare de produs. Poate că dezvoltatorul backend creează o structură de date pe care va trebui să o utilizeze și frontend-ul. Dezvoltatorul frontend ar putea folosi git cherry-pick
pentru a alege confirmarea în care a fost creată această structură de date ipotetică. Această selectare ar permite dezvoltatorului frontend să continue progresul pe partea sa de proiect.
Corecții de erori
Când se descoperă o eroare, este important să se livreze o corecție utilizatorilor finali cât mai repede posibil. Pentru un scenariu de exemplu,să spunem că un dezvoltator a început să lucreze la o nouă caracteristică. În timpul dezvoltării acestei noi caracteristici, el identifică un bug preexistent. Dezvoltatorul creează un commit explicit care corectează această eroare. Această nouă confirmare de corecție poate fi preluată direct în ramura master
pentru a remedia bug-ul înainte ca acesta să afecteze mai mulți utilizatori.
Anularea modificărilor și restabilirea confirmărilor pierdute
Câteodată o ramură feature
poate deveni veche și să nu fie fuzionată în master
. Uneori, o cerere de extragere poate fi închisă fără a fi fuzionată. Git nu pierde niciodată aceste comenzi și, prin comenzi precum git log
și git reflog
, acestea pot fi găsite și readuse la viață.
Cum se utilizează git cherry pick
Pentru a demonstra cum se utilizează git cherry-pick
să presupunem că avem un depozit cu următoarea stare a ramurii:
a - b - c - d Master
\
e - f - g Feature
git cherry-pick
utilizarea este simplă și poate fi executată ca:
git cherry-pick commitSha
În acest exemplu commit
Sha este o referință de commit. Puteți găsi o referință de confirmare folosind git log
. În acest exemplu pe care l-am construit să spunem că am vrut să folosim commit `f` în master
. Mai întâi ne asigurăm că lucrăm pe ramura master
.
git checkout master
Apoi executăm cherry-pick cu următoarea comandă:
git cherry-pick f
După ce a fost executată, istoricul nostru Git va arăta așa:
git cherry-pick f
:
a - b - c - d - f Master
\
e - f - g Feature
Compromisiunea f a fost preluată cu succes în ramura master
Exemple de git cherry pick
git cherry pick
pot fi trecute și câteva opțiuni de execuție.
-edit
Pasarea opțiunii -edit
va face ca git să ceară un mesaj de confirmare înainte de a aplica operația cherry-pick
--no-commit
Opțiunea --no-commit
va executa cherry pick, dar în loc să facă o nouă confirmare va muta conținutul confirmării țintă în directorul de lucru al ramurii curente.
--signoff
Opțiunea --signoff
va adăuga o linie de semnătură ‘signoff’ la sfârșitul mesajului de confirmare cherry-pick
În plus față de aceste opțiuni utile, git cherry-pick
acceptă, de asemenea, o varietate de opțiuni de strategie de fuziune. Aflați mai multe despre aceste opțiuni în documentația git merge strategies.
În plus, git cherry-pick acceptă și opțiuni de intrare pentru rezolvarea conflictelor de fuziune, aceasta include opțiuni: --abort --continue
și --quit
aceste opțiuni sunt acoperite mai în profunzime în ceea ce privește git merge și git rebase.
Rezumat
Cherry picking este o comandă puternică și convenabilă care este incredibil de utilă în câteva scenarii. Cherry picking nu ar trebui să fie folosit în mod abuziv în loc de git merge sau git rebase. Comanda git log este necesară pentru a ajuta la găsirea comenzilor pentru cherry picking.