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.
- Utilitzant
git bisect
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
?
-
Iniciar
git bisect
:git bisect start
-
Marcar el commit actual com a dolent:
git bisect bad
-
Marcar un commit conegut com a bo:
git bisect good <commit_hash>
-
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
-
Repetir fins que es trobi el commit problemàtic.
-
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 canviarà a un commit intermedi. Prova el codi i marca'l com a bo o dolent fins que es trobi el commit problemàtic.
- Utilitzant
git blame
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
?
- 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
:
Això mostrarà una sortida amb el commit, l'autor i la data per a cada línia del fitxer.
- Utilitzant
git log
amb Opcions Avançades
git log
amb Opcions AvançadesQuè é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:
- Utilitzant
git reflog
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
?
-
Veure l'historial de
HEAD
:git reflog
-
Restaurar un commit perdut:
git reset --hard <reflog_entry>
Exemple Pràctic
Per veure l'historial de HEAD
:
Si trobem un commit perdut amb el hash abc123
, podem restaurar-lo:
Exercicis Pràctics
Exercici 1: Utilitzar git bisect
- Inicia
git bisect
en un repositori amb un error conegut. - Marca el commit actual com a dolent.
- Marca un commit conegut com a bo.
- Segueix les instruccions de
git bisect
fins a trobar el commit problemàtic. - Finalitza
git bisect
.
Exercici 2: Utilitzar git blame
- Executa
git blame
en un fitxer del teu repositori. - Identifica qui va introduir una línia específica.
Exercici 3: Utilitzar git log
amb opcions avançades
- Filtra l'historial de commits per autor.
- Filtra l'historial de commits per data.
- Mostra els canvis en un fitxer específic.
Exercici 4: Utilitzar git reflog
- Veure l'historial de
HEAD
ambgit reflog
. - 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
- 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ó