Introducció
El cherry-picking és una tècnica en Git que permet aplicar canvis específics d'un commit existent a una altra branca. Aquesta operació és útil quan necessites portar un canvi concret a una branca diferent sense fusionar tot el conjunt de canvis.
Conceptes Clau
- Commit: Un instantani del teu projecte en un moment específic.
- Branca: Una línia de desenvolupament independent.
- Cherry-Pick: L'acte de seleccionar un commit específic d'una branca i aplicar-lo a una altra.
Quan Utilitzar Cherry-Picking
- Quan necessites aplicar un hotfix d'una branca de desenvolupament a la branca de producció.
- Quan vols portar un canvi específic a una branca sense fusionar tots els canvis d'aquesta branca.
Com Realitzar un Cherry-Pick
Pas 1: Identificar el Commit
Primer, has d'identificar el commit que vols cherry-pick. Pots utilitzar git log
per veure l'historial de commits i obtenir l'identificador del commit (hash).
Pas 2: Canviar a la Branca de Destí
Canvia a la branca on vols aplicar el commit.
Pas 3: Realitzar el Cherry-Pick
Utilitza el següent comandament per aplicar el commit seleccionat a la branca actual.
Exemple Pràctic
Suposem que tens dues branques: develop
i main
. Vols portar un commit específic de develop
a main
.
-
Identificar el Commit: Suposem que el hash del commit és
a1b2c3d4
.git log
-
Canviar a la Branca de Destí:
git checkout main
-
Realitzar el Cherry-Pick:
git cherry-pick a1b2c3d4
Resolució de Conflictes
És possible que trobis conflictes durant el cherry-pick. Si això passa, Git t'informarà dels fitxers en conflicte. Pots resoldre'ls manualment i després continuar amb el procés.
Passos per Resoldre Conflictes
-
Resoldre els Conflictes: Edita els fitxers en conflicte per resoldre'ls.
-
Afegir els Fitxers Resolts:
git add <fitxer-resolt>
-
Continuar amb el Cherry-Pick:
git cherry-pick --continue
Si vols avortar el cherry-pick, pots utilitzar:
Exercici Pràctic
Exercici
- Crea dues branques:
feature
imain
. - Fes un commit a la branca
feature
. - Utilitza
git cherry-pick
per portar aquest commit a la brancamain
.
Solució
-
Crear les Branques:
git checkout -b feature git checkout -b main
-
Fer un Commit a
feature
:git checkout feature echo "Hello, World!" > hello.txt git add hello.txt git commit -m "Add hello.txt"
-
Cherry-Pick a
main
:git checkout main git cherry-pick <hash-del-commit>
Errors Comuns i Consells
- Conflictes de Fusió: És comú trobar conflictes durant el cherry-pick. Assegura't de resoldre'ls correctament.
- Identificadors de Commit Incorrectes: Verifica que estàs utilitzant el hash correcte del commit.
- Historial de Commits: Utilitza
git log
per assegurar-te que el commit ha estat aplicat correctament.
Conclusió
El cherry-picking és una eina poderosa per gestionar canvis específics en Git. Amb aquesta tècnica, pots portar commits individuals a altres branques sense necessitat de fusionar tot el conjunt de canvis. Practica aquesta tècnica per dominar-la i utilitzar-la de manera efectiva en els teus projectes.
Dominar Git: De Principiant a Avançat
Mòdul 1: Introducció a Git
Mòdul 2: Operacions Bàsiques de Git
- Creant un Repositori
- Clonant un Repositori
- Flux de Treball Bàsic de Git
- Preparant i Cometent Canvis
- Veient l'Historial de Commits
Mòdul 3: Branques i Fusió
- Entenent les Branques
- Creant i Canviant de Branques
- Fusionant Branques
- Resolent Conflictes de Fusió
- Gestió de Branques
Mòdul 4: Treballant amb Repositoris Remots
- Entenent els Repositoris Remots
- Afegint un Repositori Remot
- Recuperant i Traient Canvis
- Empenyent Canvis
- Seguint Branques
Mòdul 5: Operacions Avançades de Git
Mòdul 6: Eines i Tècniques de Git
Mòdul 7: Estratègies de Col·laboració i Flux de Treball
- Forking i Pull Requests
- Revisions de Codi amb Git
- Flux de Treball Git Flow
- GitHub Flow
- Integració Contínua amb Git
Mòdul 8: Millors Pràctiques i Consells de Git
- Escrivint Bons Missatges de Commit
- Mantenint un Historial Netejat
- Ignorant Fitxers amb .gitignore
- Millors Pràctiques de Seguretat
- Consells de Rendiment
Mòdul 9: Resolució de Problemes i Depuració
- Problemes Comuns de Git
- Desfent Canvis
- Recuperant Commits Perduts
- Tractant amb Repositoris Corruptes
- Tècniques Avançades de Depuració