Saltar al contenido principal

Git Blame Explicado: Cómo rastrear el historial del código y colaborar de forma más inteligente

Aprende a utilizar Git Blame para rastrear cambios en el código, identificar autores y comprender el historial de archivos. Esta guía abarca comandos básicos, funciones avanzadas e integraciones para mejorar tus habilidades de depuración y colaboración.
Actualizado 26 mar 2025  · 9 min de lectura

Git es una potente herramienta para hacer un seguimiento de los cambios en el código, sobre todo para ayudar a los equipos a seguirlos, colaborar eficazmente y depurar problemas. Proporciona varias herramientas para gestionar el historial de código; una de las más útiles es git blame. Este comando ayuda a los desarrolladores a rastrear el origen de cada línea de un archivo, mostrando quién lo modificó por última vez y cuándo.

En este artículo, exploraremos cómo utilizar git blame para realizar un seguimiento de los cambios en un proyecto. Empezaremos con comandos básicos y avanzaremos gradualmente hacia funciones avanzadas, como ignorar revisiones específicas, integrarnos con herramientas de desarrollo y utilizar las mejores prácticas. Al final, tendrás una sólida comprensión de cómo analizar eficazmente el historial de código y mejorar la colaboración dentro de tu equipo.

¿Qué es Git Blame?

Los cambios en el código pueden ser difíciles de rastrear, especialmente en grandes proyectos en los que intervienen múltiples colaboradores. Comprender el historial de un archivo es crucial para depurar, revisar decisiones pasadas y mantener la calidad del código. Sin un historial claro, los equipos pueden tener dificultades para determinar por qué se hizo un cambio concreto o a quién pedir aclaraciones.

Aquí es donde git blame adquiere un valor incalculable. Te permite localizar los cambios a un nivel granular, revelando los detalles de la confirmación junto a cada línea de código. Con esta información, puedes encontrar rápidamente la confirmación relevante, comprobar el mensaje asociado y ver el contexto más amplio del cambio. Tanto si estás solucionando un error, revisando modificaciones o simplemente intentando comprender la evolución de un archivo, git blame te proporciona la información necesaria para tomar decisiones con conocimiento de causa.

Comprender la culpa de Git: Guía para desarrolladores

¿Por qué usar git blame?

Cuando trabajas en equipo o depuras un problema, saber quién editó por última vez una línea de código puede ser útil. Si aparece un error tras una actualización reciente, git blame ayuda a localizar el cambio exacto que introdujo el problema. También permite a los desarrolladores ponerse en contacto con la persona adecuada cuando necesitan aclaraciones sobre una cuestión concreta.

Este comando también es útil para comprender el razonamiento de los cambios. Los comentarios del código y los mensajes de confirmación a veces no captan todo el proceso de pensamiento. Al rastrear un cambio hasta un commit concreto, los desarrolladores pueden revisar las discusiones relacionadas y ver el panorama general.

¿Por qué usar git blame?

Puedes aprender más en nuestro tutorial sobre Git y GitHub, que sirve como guía para principiantes, explicando el funcionamiento del control de versiones Git y destacando su papel crucial en los proyectos de ciencia de datos.

Uso básico de git blame

La sintaxis básica de git blame es:

git blame <file>

Este comando anota cada línea con la última confirmación que la modificó, incluyendo autor, marca de tiempo y hash de la confirmación. He aquí un ejemplo:

$ git blame example.py
derrickmwiti@Derricks-MacBook-Pro remixer % git blame src/components/ContentGenerator.vue
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    1) <template>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    2)   <div class="content-generator">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    3)     <div class="card h-100 border-0 shadow-sm">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    4)       <div class="card-header bg-white border-bottom-0 pt-4">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    5)         <div class="d-flex justify-content-between align-items-center mb-3">
289030a0 (Derrick Mwiti 2025-03-11 12:47:11 +0300    6)           <div class="d-flex align-items-center gap-2">
289030a0 (Derrick Mwiti 2025-03-11 12:47:11 +0300    7)             <h5 class="mb-0">Content Generator</h5>
289030a0 (Derrick Mwiti 2025-03-11 12:47:11 +0300    8)             <span class="badge bg-secondary" v-if="openaiModel">{{ openaiModel }}</span>
289030a0 (Derrick Mwiti 2025-03-11 12:47:11 +0300    9)           </div>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   10)         </div>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   11) 
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   12) 
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   13)         <nav>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   14)           <div class="nav nav-tabs card-header-tabs gap-1" id="nav-tab" role="tablist">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   15)             <button
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   16)               v-for="platform in platforms"
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   17)               :key="platform"
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   18)               class="nav-link"

Cada línea contiene:

  • El hash de confirmación (^3b1aef2 y ^8f2c4d3)
  • El nombre del autor (Derrick Mwiti)
  • La fecha y hora de la última modificación
  • La línea de código real

Aplicaciones prácticas de Git Blame

Ahora que entiendes la sintaxis básica de git blame, veamos cómo puedes aplicarla en los escenarios de desarrollo cotidianos.

Encontrar al autor de una línea concreta

Si un archivo es grande y sólo necesitas inspeccionar una parte determinada, especifica un intervalo de líneas:

derrickmwiti@Derricks-MacBook-Pro remixer % git blame -L 10,20  src/components/ContentGenerator.vue
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 10)         </div>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 11) 
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 12) 
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 13)         <nav>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 14)           <div class="nav nav-tabs card-header-tabs gap-1" id="nav-tab" role="tablist">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 15)             <button
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 16)               v-for="platform in platforms"
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 17)               :key="platform"
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 18)               class="nav-link"
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 19)               :class="{ active: activeTab === platform }"
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 20)               :id="nav-${platform}-tab"

Esto se centra en las líneas 10 a 20, facilitando la localización de los cambios relevantes.

Comprender los cambios mediante git show

Aunque git blame resalta el último cambio de cada línea, no explica qué se modificó en esa confirmación. Para ver más detalles, utiliza git show :

derrickmwiti@Derricks-MacBook-Pro remixer % git show  28203e0
commit 28203e0f7cbe92c6baf6897a54686e87d16c9cda
Author: Derrick Mwiti <mwitiderrick@gmail.com>
Date:   Mon Mar 10 17:48:31 2025 +0300


diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..5a5809d
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,9 @@
+[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}]
+charset = utf-8
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+end_of_line = lf
+max_line_length = 100
diff --git a/.env b/.env
:

Sustituyendo por el ID de confirmación real de git blame se muestra el mensaje de confirmación completo y la diferencia de código, lo que ayuda a comprender el motivo del cambio.

Para profundizar en este tema, explora nuestro Tutorial de Git Diff para aprender a utilizar git diff para realizar un seguimiento eficaz de los cambios en el código, desde comparaciones básicas hasta técnicas avanzadas.

Funciones avanzadas de Git Blame

Éstas son algunas de las formas más implicadas en las que puedes utilizar la culpa de Git en un flujo de trabajo: 

Ignorar los cambios en los espacios en blanco

Algunos cambios de formato, como arreglar la sangría, no afectan a la lógica. Para filtrarlos, utiliza git blame -w :

derrickmwiti@Derricks-MacBook-Pro remixer % git blame -w src/components/ContentGenerator.vue       
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    1) <template>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    2)   <div class="content-generator">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    3)     <div class="card h-100 border-0 shadow-sm">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    4)       <div class="card-header bg-white border-bottom-0

Ignorar revisiones específicas

Si ciertas confirmaciones (como el reformateo masivo) desordenan el historial de culpas, pueden ignorarse con git blame --ignore-rev :

derrickmwiti@Derricks-MacBook-Pro remixer % git blame --ignore-rev 28203e0 src/components/ContentGenerator.vue 
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    1) <template>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    2)   <div class="content-generator">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    3)     <div class="card h-100 border-0 shadow-sm">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    4)       <div class="card-header bg-white border-bottom-0 pt-4">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    5)         <div class="d-flex justify-content-between align-items-center mb-3">
289030a0 (Derrick Mwiti 2025-03-11 12:47:11 +0300    6)           <div class="d-flex align-items-center gap-2">

Para ignorar múltiples confirmaciones de forma coherente, puedes listarlas en un archivo y hacer referencia a él utilizando la opción --ignore-revs-file. Esto ayuda a mantener limpio el historial de culpas excluyendo los cambios irrelevantes.

En el directorio raíz de tu repositorio, crea un archivo llamado .git-blame-ignore-revs. Lista los hashes de confirmación que hay que ignorar, añadiendo opcionalmente comentarios para mayor claridad:

# Commit introducing code formatting changes
a926bba49c89a5b882cd298be3af2570b1e6252c

Ejecuta el siguiente comando para ignorar las revisiones especificadas.

git blame --ignore-revs-file .git-blame-ignore-revs filename

Ejecuta el siguiente comando para indicar a Git que utilice tu archivo de ignorar por defecto:

git config blame.ignoreRevsFile .git-blame-ignore-revs

Ver los correos electrónicos de los autores en lugar de los nombres

Para mostrar el correo electrónico del autor en lugar de su nombre:

derrickmwiti@Derricks-MacBook-Pro remixer % git blame --show-email  src/components/PostsManager.vue
dbe547ec (<derrick@gmail.com> 2025-03-11 09:22:59 +0300   1) <template>
dbe547ec (<derrick@gmail.com> 2025-03-11 09:22:59 +0300   2)   <div class="posts-manager">
dbe547ec (<derrick@gmail.com> 2025-03-11 09:22:59 +0300   3)     <h3>Saved Posts</h3>
dbe547ec (<derrick@gmail.com> 2025-03-11 09:22:59 +0300   4)     
dbe547ec (<derrick@gmail.com> 2025-03-11 09:22:59 +0300   5)     <div v-if="loading" class="text-center my-4">
dbe547ec (<derrick@gmail.com> 2025-03-11 09:22:59 +0300   6)       <div class="spinner-border text-primary" role="status">

Esto puede ser útil para contactar con la persona responsable de un cambio concreto.

Visualización de los hash de confirmación completos

Por defecto, git blame muestra los hash de confirmación cortos. Para ver los hashes completos, ejecuta

derrickmwiti@Derricks-MacBook-Pro remixer % git blame --abbrev=40 src/components/PostsManager.vue
dbe547ec4ece7cb2a1ff3dadb4770cc9ee9f161e (Derrick Mwiti 2025-03-11 09:22:59 +0300   1) <template>
dbe547ec4ece7cb2a1ff3dadb4770cc9ee9f161e (Derrick Mwiti 2025-03-11 09:22:59 +0300   2)   <div class="posts-manager">
dbe547ec4ece7cb2a1ff3dadb4770cc9ee9f161e (Derrick Mwiti 2025-03-11 09:22:59 +0300   3)     <h3>Saved Posts</h3>
dbe547ec4ece7cb2a1ff3dadb4770cc9ee9f161e (Derrick Mwiti 2025-03-11 09:22:59 +0300   4)     
dbe547ec4ece7cb2a1ff3dadb4770cc9ee9f161e (Derrick Mwiti 2025-03-11 09:22:59 +0300   5)     <div v-if="loading" class="text-center my-4">

Puedes ajustar la longitud de las abreviaturas de la culpa de Git utilizando la opción --abbrev=.

Uso de git blame en Visual Studio Code

Para los desarrolladores que utilizan Visual Studio Code, la extensión Git Blame proporciona soporte integrado para git blame

Esta extensión permite a los usuarios

  • Ver las anotaciones de culpa en línea.
  • Pasa el ratón por encima de las líneas para ver los detalles de la confirmación.
  • Accede al historial completo de archivos y líneas.

Buenas prácticas de Git Blame

Mantener un archivo .git-blame-ignore-revs garantiza que las confirmaciones de formato no saturen el historial de culpas. Cuando se trabaja en equipo, ayuda que todos sigan las mismas convenciones para ignorar las revisiones.

Al utilizar git blame, el objetivo debe ser siempre comprender el razonamiento que hay detrás de los cambios, no culpar a nadie. Es una herramienta para aprender y mejorar la colaboración, ayudando a los desarrolladores a trabajar juntos de forma más eficiente.

Ciclo de colaboración Git Blame

Conclusión 

En este artículo, hemos visto cómo git blame puede ayudar a los desarrolladores a realizar un seguimiento de los cambios en su código. Desde el uso básico hasta las funciones avanzadas, exploramos cómo este comando proporciona claridad sobre quién modificó un archivo y cuándo.

Puedes optimizar este comando integrándolo con otras herramientas Git, como git show y configurando las revisiones ignoradas. Tanto si estás depurando un problema, revisando cambios o simplemente comprendiendo el historial de un archivo, git blame ofrece valiosas perspectivas que mejoran el mantenimiento del código y la colaboración.

Dominar herramientas como git blame te ayuda a navegar por bases de código con confianza, colaborar más eficazmente y mantener historiales de proyectos más limpios. No se trata sólo de averiguar quién ha cambiado una línea -sino por qué- y utilizar esa información para crear un software mejor. Para profundizar en el ecosistema Git, consulta nuestro curso completo sobre Git. o sumérgete en nuestro Curso de Git para usuarios intermedios.

Preguntas frecuentes sobre Git Blame

¿Cómo puedo ignorar los cambios de espacios en blanco en git blame?

Puedes utilizar la opción -w para ignorar los cambios que sólo afectan a los espacios en blanco, como los ajustes de sangría o espaciado.

¿Cómo encuentro los detalles de commit de un cambio concreto en git blame?

Tras identificar un hash de confirmación desde git blame, utiliza git show para ver los detalles de la confirmación, incluidos los cambios realizados.

¿Cómo puedo excluir determinados commits de los resultados de git blame?

Si quieres ignorar confirmaciones concretas (por ejemplo, cambios en el formato del código), utiliza:

git blame --ignore-rev  

Para varios commits ignorados, guárdalos en un archivo .git-blame-ignore-revs y ejecútalos:

git blame --ignore-revs-file .git-blame-ignore-revs 

¿Hay alguna forma de utilizar git blame en Visual Studio Code?

Sí, la extensión Git Blame de VS Code proporciona anotaciones de autoría en línea, historial de confirmaciones e información detallada. Puedes activar o personalizar las anotaciones de culpa a través de su configuración.

Temas

Los mejores cursos de DataCamp

Curso

Introduction to GitHub Concepts

2 h
26K
Learn how to use GitHub's various features, navigate the interface and perform everyday collaborative tasks.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

Tutorial

Git rename branch: Cómo cambiar el nombre de una rama local o remota

Aprende a renombrar ramas Git locales y remotas utilizando el terminal o la interfaz gráfica de usuario (GUI) de clientes populares como GitHub.

Tutorial

Tutorial de GitHub y Git para principiantes

Un tutorial para principiantes que muestra cómo funciona el control de versiones Git y por qué es crucial para los proyectos de ciencia de datos.
Abid Ali Awan's photo

Abid Ali Awan

9 min

Tutorial

Tutorial de Git Revert y Git Reset para principiantes

Una guía tutorial para principiantes que muestra cómo utilizar los comandos Git Revert y Reset.
Zoumana Keita 's photo

Zoumana Keita

10 min

Tutorial

Git Prune: Qué es la poda Git y cómo usarla

La poda Git es un comando Git que elimina del repositorio los objetos que ya no son accesibles desde ninguna confirmación o rama, ayudando a liberar espacio en disco.

Tutorial

Git pull force: Cómo sobrescribir una rama local con una remota

Aprende por qué git pull --force no es la mejor forma de sobrescribir una rama local con la versión remota, y descubre el método adecuado utilizando git fetch y git reset.

Tutorial

Tutorial de GIT Push y Pull

Aprende a realizar solicitudes de Git PUSH y PULL con GitHub Desktop y la línea de comandos.

Olivia Smith

13 min

Ver másVer más