En aquest tema, explorarem tècniques avançades per depurar problemes complexos en Git. Aquestes tècniques són útils quan les eines bàsiques de depuració no són suficients per resoldre problemes intricats. Aprendrem a utilitzar comandes avançades i estratègies per identificar i solucionar problemes de manera eficient.

  1. Utilitzant git bisect

Què és git bisect?

git bisect és una eina poderosa que permet trobar el commit que va introduir un error en el codi. Utilitza una cerca binària per identificar el commit problemàtic.

Com utilitzar git bisect?

  1. Iniciar git bisect:

    git bisect start
    
  2. Marcar el commit actual com a dolent:

    git bisect bad
    
  3. Marcar un commit conegut com a bo:

    git bisect good <commit_hash>
    
  4. Git farà una cerca binària i canviarà a un commit intermedi. Prova el codi i marca'l com a bo o dolent:

    git bisect good  # Si el commit és bo
    git bisect bad   # Si el commit és dolent
    
  5. Repetir fins que es trobi el commit problemàtic.

  6. Finalitzar git bisect:

    git bisect reset
    

Exemple Pràctic

Suposem que tenim un error en el nostre projecte i sabem que el commit abc123 és bo i el commit def456 és dolent.

git bisect start
git bisect bad def456
git bisect good abc123

Git canviarà a un commit intermedi. Prova el codi i marca'l com a bo o dolent fins que es trobi el commit problemàtic.

  1. Utilitzant git blame

Què és git blame?

git blame mostra la informació de cada línia d'un fitxer, incloent el commit que la va introduir i l'autor. És útil per identificar qui va introduir un canvi específic.

Com utilitzar git blame?

  1. Executar git blame en un fitxer:
    git blame <fitxer>
    

Exemple Pràctic

Per veure qui va introduir cada línia en el fitxer main.py:

git blame main.py

Això mostrarà una sortida amb el commit, l'autor i la data per a cada línia del fitxer.

  1. Utilitzant git log amb Opcions Avançades

Què és git log?

git log mostra l'historial de commits. Amb opcions avançades, podem filtrar i formatar la sortida per trobar informació específica.

Opcions Avançades de git log

  • Filtrar per autor:

    git log --author="Nom de l'Autor"
    
  • Filtrar per data:

    git log --since="2 weeks ago"
    
  • Mostrar només els missatges de commit:

    git log --oneline
    
  • Mostrar canvis en un fitxer específic:

    git log -p <fitxer>
    

Exemple Pràctic

Per veure els commits fets per "Joan" en les últimes dues setmanes:

git log --author="Joan" --since="2 weeks ago"

  1. Utilitzant git reflog

Què és git reflog?

git reflog registra totes les accions que modifiquen el HEAD del repositori. És útil per recuperar commits perduts o per veure l'historial complet de canvis.

Com utilitzar git reflog?

  1. Veure l'historial de HEAD:

    git reflog
    
  2. Restaurar un commit perdut:

    git reset --hard <reflog_entry>
    

Exemple Pràctic

Per veure l'historial de HEAD:

git reflog

Si trobem un commit perdut amb el hash abc123, podem restaurar-lo:

git reset --hard abc123

Exercicis Pràctics

Exercici 1: Utilitzar git bisect

  1. Inicia git bisect en un repositori amb un error conegut.
  2. Marca el commit actual com a dolent.
  3. Marca un commit conegut com a bo.
  4. Segueix les instruccions de git bisect fins a trobar el commit problemàtic.
  5. Finalitza git bisect.

Exercici 2: Utilitzar git blame

  1. Executa git blame en un fitxer del teu repositori.
  2. Identifica qui va introduir una línia específica.

Exercici 3: Utilitzar git log amb opcions avançades

  1. Filtra l'historial de commits per autor.
  2. Filtra l'historial de commits per data.
  3. Mostra els canvis en un fitxer específic.

Exercici 4: Utilitzar git reflog

  1. Veure l'historial de HEAD amb git reflog.
  2. Identifica un commit perdut i restaura'l.

Resum

En aquesta secció, hem après tècniques avançades de depuració en Git, incloent l'ús de git bisect, git blame, git log amb opcions avançades i git reflog. Aquestes eines són essencials per identificar i solucionar problemes complexos en el teu repositori. Practica aquestes tècniques per millorar les teves habilitats de depuració i mantenir el teu codi net i funcional.

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