Introducció
El rebasing és una operació avançada de Git que permet reescriure l'historial de commits d'una branca. És una eina poderosa que pot ajudar a mantenir un historial de commits net i lineal, però també pot ser perillosa si no s'utilitza correctament. En aquesta secció, aprendrem què és el rebasing, com utilitzar-lo i quins són els seus avantatges i desavantatges.
Què és el Rebasing?
El rebasing és el procés de moure o combinar una seqüència de commits a una nova base commit. En lloc de crear un nou commit de fusió quan es fusionen branques, el rebasing reescriu l'historial de commits per aplicar els canvis d'una branca sobre una altra.
Avantatges del Rebasing
- Historial Net i Lineal: El rebasing ajuda a mantenir un historial de commits net i lineal, el que facilita la lectura i la comprensió de l'historial del projecte.
- Evita Commits de Fusió Innecessaris: En lloc de crear un nou commit de fusió, el rebasing aplica els canvis directament sobre la branca base, evitant commits de fusió innecessaris.
Desavantatges del Rebasing
- Risc de Pèrdua de Dades: Si no es fa correctament, el rebasing pot provocar la pèrdua de dades. És important assegurar-se que no es perden commits importants durant el procés.
- Conflictes de Fusió: El rebasing pot generar conflictes de fusió que han de ser resolts manualment.
Com Utilitzar el Rebasing
Rebasing Interactiu
El rebasing interactiu és una variant del rebasing que permet modificar l'historial de commits de manera més detallada. Amb el rebasing interactiu, es poden editar, reordenar, combinar o eliminar commits.
Exemple de Rebasing Interactiu
-
Inicia el Rebasing Interactiu:
git rebase -i HEAD~3
Aquest comandament obrirà un editor de text amb els últims 3 commits.
-
Modifica l'Historial de Commits: L'editor de text mostrarà una llista de commits amb opcions per modificar-los. Per exemple:
pick 1234567 Commit 1 pick 89abcdef Commit 2 pick fedcba98 Commit 3
Pots canviar
pick
peredit
,squash
,reword
, etc. -
Guarda i Tanca l'Editor: Després de fer els canvis desitjats, guarda i tanca l'editor. Git aplicarà els canvis segons les instruccions donades.
Rebasing d'una Branca
Per rebasear una branca sobre una altra, utilitza el següent comandament:
Aquest comandament rebasearà la branca feature-branch
sobre la branca main
.
Resolució de Conflictes durant el Rebasing
Durant el procés de rebasing, poden sorgir conflictes de fusió. Per resoldre'ls:
-
Identifica els Fitxers en Conflicte: Git t'informarà dels fitxers que tenen conflictes.
-
Edita els Fitxers en Conflicte: Obre els fitxers en conflicte i resol els conflictes manualment.
-
Marca els Conflictes com a Resolts: Després de resoldre els conflictes, marca els fitxers com a resolts:
git add <fitxer>
-
Continua el Rebasing: Un cop resolts tots els conflictes, continua el rebasing:
git rebase --continue
Exercicis Pràctics
Exercici 1: Rebasing d'una Branca
-
Crea una nova branca i afegeix alguns commits:
git checkout -b feature-branch echo "Canvi 1" > fitxer.txt git add fitxer.txt git commit -m "Commit 1" echo "Canvi 2" >> fitxer.txt git add fitxer.txt git commit -m "Commit 2"
-
Torna a la branca principal i afegeix un commit:
git checkout main echo "Canvi en main" > fitxer.txt git add fitxer.txt git commit -m "Commit en main"
-
Rebasea la branca
feature-branch
sobremain
:git checkout feature-branch git rebase main
Exercici 2: Rebasing Interactiu
-
Inicia un rebasing interactiu per als últims 3 commits:
git rebase -i HEAD~3
-
Canvia l'ordre dels commits i combina dos commits en un.
-
Guarda i tanca l'editor per aplicar els canvis.
Resum
El rebasing és una eina poderosa per mantenir un historial de commits net i lineal. Tot i que pot ser complex i arriscat, amb una comprensió adequada i pràctica, es pot utilitzar de manera efectiva per millorar la qualitat de l'historial del projecte. Recorda sempre fer còpies de seguretat abans de realitzar operacions de rebasing i utilitzar-lo amb precaució.
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ó