En aquest tema, aprendrem com desfer canvis en Git. Aquesta és una habilitat essencial per a qualsevol desenvolupador, ja que permet corregir errors i mantenir un historial de commits net i coherent. Explorarem diverses tècniques per desfer canvis, des de desfer commits fins a restablir fitxers individuals.
Objectius
- Entendre les diferents maneres de desfer canvis en Git.
- Aprendre a utilitzar les comandes
git reset
,git revert
igit checkout
. - Saber quan utilitzar cada tècnica segons la situació.
- Desfent Canvis en l'Àrea de Preparació (Staging Area)
1.1. Despreparar Fitxers
Si has afegit fitxers a l'àrea de preparació per error, pots utilitzar la comanda git reset
per treure'ls.
1.2. Despreparar Tots els Fitxers
Per despreparar tots els fitxers de l'àrea de preparació, pots utilitzar:
- Desfent Canvis en el Directori de Treball
2.1. Restablir Fitxers Individuals
Si has fet canvis en un fitxer i vols restablir-lo a l'últim commit, pots utilitzar git checkout
.
2.2. Restablir Tots els Fitxers
Per restablir tots els fitxers del directori de treball a l'últim commit:
- Desfent Commits
3.1. Utilitzant git reset
La comanda git reset
es pot utilitzar per desfer commits. Hi ha tres modes principals: --soft
, --mixed
i --hard
.
3.1.1. --soft
Manté els canvis en l'àrea de preparació.
3.1.2. --mixed
Manté els canvis en el directori de treball, però els treu de l'àrea de preparació.
3.1.3. --hard
Elimina tots els canvis, tant de l'àrea de preparació com del directori de treball.
3.2. Utilitzant git revert
A diferència de git reset
, git revert
crea un nou commit que desfà els canvis del commit especificat. Això és útil per mantenir un historial de commits clar.
# Desfer l'últim commit creant un nou commit git revert HEAD # Desfer un commit específic git revert <commit_hash> # Exemple git revert a1b2c3d4
Exercicis Pràctics
Exercici 1: Despreparar Fitxers
- Crea un fitxer anomenat
test.txt
i afegeix-lo a l'àrea de preparació. - Desprepara el fitxer utilitzant
git reset
.
Exercici 2: Restablir Fitxers
- Fes canvis en un fitxer existent en el teu repositori.
- Restableix el fitxer a l'últim commit utilitzant
git checkout
.
Exercici 3: Desfer Commits
- Fes un commit amb canvis en un fitxer.
- Desfés el commit utilitzant
git reset --soft
. - Torna a fer el commit i desfés-lo utilitzant
git revert
.
Solucions
Solució a l'Exercici 1
# Crear el fitxer i afegir-lo a l'àrea de preparació echo "Hola, món!" > test.txt git add test.txt # Despreparar el fitxer git reset HEAD test.txt
Solució a l'Exercici 2
# Fes canvis en un fitxer existent echo "Canvi nou" >> existent.txt # Restablir el fitxer a l'últim commit git checkout -- existent.txt
Solució a l'Exercici 3
# Fes un commit amb canvis en un fitxer echo "Canvi per desfer" >> test.txt git add test.txt git commit -m "Afegir canvi per desfer" # Desfés el commit utilitzant `git reset --soft` git reset --soft HEAD~1 # Torna a fer el commit git add test.txt git commit -m "Afegir canvi per desfer" # Desfés el commit utilitzant `git revert` git revert HEAD
Conclusió
Desfer canvis en Git és una habilitat crucial per a qualsevol desenvolupador. Hem après a utilitzar git reset
, git checkout
i git revert
per gestionar i corregir errors en el nostre historial de commits. Amb aquestes eines, podem mantenir un historial de commits net i coherent, i assegurar-nos que els nostres projectes es mantenen en bon estat.
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ó