La fusió de branques és una de les operacions més comunes i importants en Git. Permet combinar els canvis de diferents branques en una sola, facilitant la col·laboració i la integració de noves funcionalitats en el codi principal.
Conceptes Clau
- Branca: Una línia de desenvolupament independent.
- Fusió (Merge): El procés de combinar els canvis de dues branques en una sola.
- Branca de Destí: La branca en la qual es volen integrar els canvis.
- Branca d'Origen: La branca que conté els canvis que es volen integrar.
Tipus de Fusió
- Fusió Fast-Forward: Es produeix quan la branca de destí no té cap commit nou respecte a la branca d'origen. En aquest cas, Git simplement mou el punter de la branca de destí cap endavant.
- Fusió Automàtica: Es produeix quan hi ha commits nous en ambdues branques, però Git pot combinar els canvis automàticament.
- Fusió amb Conflictes: Es produeix quan hi ha canvis conflictius en ambdues branques que Git no pot combinar automàticament. Requereix intervenció manual per resoldre els conflictes.
Exemple Pràctic
- Preparació
Suposem que tenim dues branques: main
i feature
. Volem fusionar els canvis de feature
a main
.
# Assegura't d'estar a la branca de destí git checkout main # Actualitza la branca de destí amb els últims canvis git pull origin main
- Fusió Fast-Forward
Si main
no té commits nous respecte a feature
, la fusió serà un fast-forward.
- Fusió Automàtica
Si ambdues branques tenen commits nous, Git intentarà una fusió automàtica.
- Fusió amb Conflictes
Si hi ha conflictes, Git mostrarà un missatge indicant els fitxers conflictius.
Resolució de Conflictes
- Obre els fitxers conflictius i resol els conflictes manualment.
- Marca els conflictes com a resolts.
Exercici Pràctic
Objectiu
Fusionar la branca feature
a main
i resoldre qualsevol conflicte que pugui sorgir.
Passos
- Crea un nou repositori i afegeix un fitxer
README.md
a la brancamain
. - Crea una nova branca
feature
i afegeix una línia alREADME.md
. - Torna a la branca
main
i afegeix una altra línia alREADME.md
. - Intenta fusionar
feature
amain
i resol els conflictes.
Solució
# Pas 1: Crea un nou repositori git init my-repo cd my-repo echo "Projecte Git" > README.md git add README.md git commit -m "Afegir README.md" # Pas 2: Crea la branca feature i afegeix una línia git checkout -b feature echo "Aquesta és la branca feature." >> README.md git add README.md git commit -m "Afegir línia a la branca feature" # Pas 3: Torna a la branca main i afegeix una altra línia git checkout main echo "Aquesta és la branca main." >> README.md git add README.md git commit -m "Afegir línia a la branca main" # Pas 4: Intenta fusionar feature a main git merge feature # Resol els conflictes manualment # Obre README.md i resol els conflictes # Marca els conflictes com a resolts git add README.md # Completa la fusió git commit
Resum
La fusió de branques és una operació essencial en Git que permet combinar canvis de diferents línies de desenvolupament. Hi ha diferents tipus de fusió, incloent fast-forward, automàtica i amb conflictes. És important saber com resoldre conflictes per mantenir un historial de commits net i coherent.
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ó