git-blame

git-blame es un comando de diagnóstico que analiza un archivo y te dice en qué commit, cuándo y quien, se modificó cada línea de un archivo, para poder identificar el commit concreto en el que se tomó ese cambio. Podemos usar el comando git-show para ver ese commit concreto y así entender el razonamiento detrás de ese cambio (si la descripción del commit está bien hecha, claro).

Git Blame es una herramienta fundamental para diagnosticar y entender la evolución de nuestro código. Nos permite identificar quién y cuándo se modificó una línea específica en un archivo, lo que resulta especialmente útil cuando queremos investigar la introducción de un bug o entender el motivo detrás de un cambio.

Para usar Git Blame, simplemente ejecutamos el comando git blame seguido de la ruta del archivo que queremos analizar. Por ejemplo, si queremos investigar un archivo llamado app/controllers/front-controller.rb, escribiremos:

git blame app/controllers/front-controller.rb

Al hacerlo, veremos nuestro código fuente acompañado de información adicional a la izquierda de cada línea. Esta información incluye el hash del commit donde se hizo la última modificación de esa línea, el autor y la fecha de ese cambio. Así, podemos rastrear fácilmente la historia de cada fragmento de código.

Si queremos profundizar en un cambio específico, podemos tomar el hash del commit que nos interesa y usar git show para ver los detalles completos de ese commit. Por ejemplo:

git show 9be1234

Esto nos mostrará qué modificaciones se hicieron, quién las hizo y el mensaje del commit, ayudándonos a entender el contexto detrás del cambio.

Además, Git Blame nos permite investigar el estado del archivo en commits anteriores. Para ello, podemos usar la sintaxis con tildes para referirnos a commits anteriores sin necesidad de conocer su hash exacto. Por ejemplo, para ver el blame en el commit anterior a 9be1234, podemos ejecutar:

git blame 9be1234~1 app/controllers/front-controller.rb

Aquí, ~1 indica que queremos el commit padre inmediato de 9be1234. Esto nos muestra cómo estaba el archivo justo antes de ese cambio, permitiéndonos comparar y entender mejor la evolución del código.

Es importante recordar que Git Blame no busca culpables, sino que nos ayuda a culpar a commits, que son registros de cambios sin emociones ni intenciones. Esta perspectiva nos facilita analizar el código de manera objetiva y mejorar la calidad de nuestro proyecto.

Finalmente, muchas plataformas web como GitHub o GitLab incluyen un botón de Blame en la vista de archivos, lo que facilita aún más esta tarea sin necesidad de usar la línea de comandos.

Con estas herramientas y técnicas, podemos diagnosticar problemas, rastrear cambios y comprender mejor la historia de nuestro código para mantener proyectos más saludables y controlados.

Lista de reproducción
  1. 1
    ¿Qué es Git?
    4 minutos
  2. 2
    Cómo instalar Git
    9 minutos
  3. 3
    Creando tu primer commit
    9 minutos
  4. 4
    Qué es el staging area
    10 minutos
  5. 5
    Cómo deshacer modificaciones de archivos
    7 minutos
  6. 6
    Cómo deshacer un commit con reset
    7 minutos
  7. 7
    Cómo revertir un commit con revert
    7 minutos
  8. 8
    Introducción a las ramas
    6 minutos
  9. 9
    Cómo crear y modificar ramas
    6 minutos
  10. 10
    Commits bajo el workflow Feature Branch
    6 minutos
  11. 11
    Cómo fusionar ramas con merge
    6 minutos
  12. 12
    Fusiones conflictivas
    9 minutos
  13. 13
    Cómo construir alias
    7 minutos
  14. 14
    Más sobre conflictos
    9 minutos
  15. 15
    Etiquetas
    7 minutos
  16. 16
    Tags anotados
    9 minutos
  17. 17
    git stash: esconder cambios
    6 minutos
  18. 18
    Introducción a remotos
    5 minutos
  19. 19
    Pusheando a un remoto
    6 minutos
  20. 20
    Clonando y haciendo pull
    6 minutos
  21. 21
    Fetch y pull rebases
    8 minutos
  22. 22
    Rebase
    7 minutos
  23. 23
    Rebase interactivo
    6 minutos
  24. 24
    Master, main y otros nombres de rama
    9 minutos
  25. 25
    git switch
    9 minutos
  26. 26
    git-restore
    10 minutos
  27. 27
    git-grep
    11 minutos
  28. 28
    Gitignore
    11 minutos
  29. 29
    El flag --patch
    9 minutos
  30. 30
    git-apply y parches en bruto (advanced)
    9 minutos
  31. 31
    Merge octopus (advanced)
    9 minutos
  32. 32
    Conventional commits
    12 minutos
  33. 33
    Merge and squash (GitLab / GitHub...)
    6 minutos
  34. 34
    git merge --squash
    7 minutos
  35. 35
    git-bisect
    8 minutos
  36. 36
    git-blame
    6 minutos
  37. 37
    git-reflog
    10 minutos
  38. 38
    Git para la Bash
    11 minutos
  39. 39
    Submódulos (parte 1)
    7 minutos
  40. 40
    Submódulos (parte 2)
    10 minutos
  41. 41
    Otros clientes Git (último episodio)
    9 minutos