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 i git checkout.
  • Saber quan utilitzar cada tècnica segons la situació.

  1. 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.

# Despreparar un fitxer específic
git reset HEAD <fitxer>

# Exemple
git reset HEAD index.html

1.2. Despreparar Tots els Fitxers

Per despreparar tots els fitxers de l'àrea de preparació, pots utilitzar:

git reset HEAD

  1. 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.

# Restablir un fitxer específic
git checkout -- <fitxer>

# Exemple
git checkout -- index.html

2.2. Restablir Tots els Fitxers

Per restablir tots els fitxers del directori de treball a l'últim commit:

git checkout -- .

  1. 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ó.

# Desfer l'últim commit, mantenint els canvis en l'àrea de preparació
git reset --soft HEAD~1

3.1.2. --mixed

Manté els canvis en el directori de treball, però els treu de l'àrea de preparació.

# Desfer l'últim commit, mantenint els canvis en el directori de treball
git reset --mixed HEAD~1

3.1.3. --hard

Elimina tots els canvis, tant de l'àrea de preparació com del directori de treball.

# Desfer l'últim commit i eliminar tots els canvis
git reset --hard HEAD~1

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

  1. Crea un fitxer anomenat test.txt i afegeix-lo a l'àrea de preparació.
  2. Desprepara el fitxer utilitzant git reset.

Exercici 2: Restablir Fitxers

  1. Fes canvis en un fitxer existent en el teu repositori.
  2. Restableix el fitxer a l'últim commit utilitzant git checkout.

Exercici 3: Desfer Commits

  1. Fes un commit amb canvis en un fitxer.
  2. Desfés el commit utilitzant git reset --soft.
  3. 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

Mòdul 3: Branques i Fusió

Mòdul 4: Treballant amb Repositoris Remots

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

Mòdul 8: Millors Pràctiques i Consells de Git

Mòdul 9: Resolució de Problemes i Depuració

Mòdul 10: Git en el Món Real

© Copyright 2024. Tots els drets reservats