La comanda cherry-pick permet aplicar els canvis d'un commit concret
sobre la branca actual.
Aquesta ordre pot ser útil si has realitzat un canvi en una branca
incorrecta i vols copiar-lo a la branca correcta sense haver de
fusionar les branques.
Aquesta acció pot generar conflictes si els canvis que es volen aplicar
es produeixen en llocs que han segut modificats.
En aquest cas, passarem a l'estat CHERRY-PICKING i caldrà resoldre els conflictes
manualment, de la mateixa manera que es fa en una fusió de branques (merge).
Exemple: Resolució de conflictes en git cherry-pick
Vaja, ens hem tornat a enganyar de branca i hem creat el commitMenjar: taronges a la branca begudes en lloc de la branca menjar.
Tornem a copiar aquest commit a la branca menjar,
però en aquest cas hi ha conflictes, ja que el fitxer menjar.txt
ha estat modificat en ambdues branques.
jpuigcerver@fp:~/git_cherrypick(begudes)$gitcheckoutmenjar
Switched to branch 'menjar'jpuigcerver@fp:~/git_cherrypick(menjar)$gitlga
*2b643ff-(0 seconds ago)Menjar: taronges-Joan Puigcerver(begudes)*054e4e0-(0 seconds ago)Begudes: refresc-Joan Puigcerver*5b87d79-(0 seconds ago)Begudes: aigua-Joan Puigcerver| *604897c-(0 seconds ago)Menjar: pa-Joan Puigcerver(HEAD -> menjar)|/ *f21f6f7-(0 seconds ago)Commit inicial-Joan Puigcerver(main)jpuigcerver@fp:~/git_cherrypick(menjar)$gitcherry-pick2b643ff
Auto-merging menjar.txtCONFLICT (add/add): Merge conflict in menjar.txterror: could not apply 2b643ff... Menjar: tarongeshint: After resolving the conflicts, mark them withhint: "git add/rm <pathspec>", then runhint: "git cherry-pick --continue".hint: You can instead skip this commit with "git cherry-pick --skip".hint: To abort and get back to the state before "git cherry-pick",hint: run "git cherry-pick --abort".hint: Disable this message with "git config advice.mergeConflict false"jpuigcerver@fp:~/git_cherrypick(menjar|CHERRY-PICKING)$catmenjar.txt
<<<<<<< HEADPa=======Taronges>>>>>>> 2b643ff (Menjar: taronges)jpuigcerver@fp:~/git_cherrypick(menjar|CHERRY-PICKING)$codemenjar.txt# (1)!jpuigcerver@fp:~/git_cherrypick(menjar|CHERRY-PICKING)$gitdiff
diff --cc menjar.txtindex 6b24a67,694e2da..0000000--- a/menjar.txt+++ b/menjar.txt@@@ -1,1 -1,1 +1,2 @@@+Pa
+ Tarongesjpuigcerver@fp:~/git_cherrypick(menjar|CHERRY-PICKING)$gitaddmenjar.txt
jpuigcerver@fp:~/git_cherrypick(menjar|CHERRY-PICKING)$gitcherry-pick--continue--no-edit
[menjar 63d71c6] Menjar: taronges Date: Tue Jan 21 12:40:47 2025 +0100 1 file changed, 1 insertion(+)jpuigcerver@fp:~/git_cherrypick(menjar)$gitlga
*2b643ff-(0 seconds ago)Menjar: taronges-Joan Puigcerver(begudes)*054e4e0-(0 seconds ago)Begudes: refresc-Joan Puigcerver*5b87d79-(0 seconds ago)Begudes: aigua-Joan Puigcerver| *63d71c6-(0 seconds ago)Menjar: taronges-Joan Puigcerver(HEAD -> menjar)| *604897c-(0 seconds ago)Menjar: pa-Joan Puigcerver|/ *f21f6f7-(0 seconds ago)Commit inicial-Joan Puigcerver(main)
S'ha editat manualment el fitxer per eliminar els marcadors de
conflictes i deixar el contingut desitjat.
Per últim, esborrem el commit de la branca begudes.
jpuigcerver@fp:~/git_cherrypick(menjar)$gitcheckoutbegudes
Switched to branch 'begudes'jpuigcerver@fp:~/git_cherrypick(begudes)$gitreset--hard054e4e0
HEAD is now at 054e4e0 Begudes: refrescjpuigcerver@fp:~/git_cherrypick(begudes)$gitlga
*054e4e0-(0 seconds ago)Begudes: refresc-Joan Puigcerver(HEAD -> begudes)*5b87d79-(0 seconds ago)Begudes: aigua-Joan Puigcerver| *63d71c6-(0 seconds ago)Menjar: taronges-Joan Puigcerver(menjar)| *604897c-(0 seconds ago)Menjar: pa-Joan Puigcerver|/ *f21f6f7-(0 seconds ago)Commit inicial-Joan Puigcerver(main)
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent
a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.