Encuentra lo que cambió en cada commit de Git

Veamos cómo consultar los cambios que se realizaron en los diferentes commits que se han realizado cuando trabajamos con Git

Cuando consultamos el historial de registros o logs de un repositorio bajo el control de versiones Git, quizás nos interesa saber qué cambios se han realizado en los diferentes commits, para ver cuando se realizó una modificación en concreto.

Veamos cómo hacer que Git nos de la información de los cambios realizados en cada commit en un repositorio.

Este artículo es una traducción/adaptación de un artículo escrito en inglés por Seth Kenlon para la web opensource.com publicado bajo licencia CC-by-sa 4.0.

Si utilizas Git cada día, es probable que realices muchos commits. Si utilizas Git cada día en un proyecto junto con otras personas, es justo asumir que todas esas personas realizan muchos commits. Cada día. Y esto significa que eres consciente de lo confuso que puede volverse un log de los cambios de Git, con una lista aparentemente eterna de cambios y sin señales de lo que se ha cambiado.

Entonces, ¿cómo saber qué archivo cambió en un commit específico? Es más fácil de lo que piensas.

Encuentra qué archivo cambió en un commit

Para averiguar qué archivos cambiaron en un commit específico, utiliza el comando git log --raw . Es la forma más rápida y sencilla de obtener información sobre los archivos a los que afecta un commit.

El comando git log en general está infrautilizado, en gran medida porque tiene muchas opciones de formato y muchas personas se sienten abrumadas por disponer de demasiadas opciones y, en algunos casos, por una documentación poco clara.

El mecanismo de log en Git es sorprendentemente flexible, y la opción --raw ofrece un registro de commits de la rama actual, además de una lista de cada archivo en el que se realizaron cambios.

Esta es la salida de un estándar git log:

commit 87032736eccc70dae296993110b2530a81385d0b (HEAD -> main, origin/main, origin/HEAD)
Author: Victorhck <victorhck@mailbox.org>
Date:   Fri Sep 23 17:11:40 2022 +0200

    añadir enlace al artículo de mi blog

commit bef5764b03177f668137cca80b02bbf276f65ead
Author: Victorhck <victorhck@mailbox.org>
Date:   Sun Jul 17 18:49:26 2022 +0200

    corregir README

commit c686c803ffd658fb0783d81621a1d60107265f3f
Author: Victorhck <victorhck@mailbox.org>
Date:   Mon Jul 11 22:27:18 2022 +0200

    cambio nombre a captura en README

commit c95df01ab35d9525e9d0513c44cad7ca4bff35a6
Author: Victorhck <victorhck@mailbox.org>
Date:   Mon Jul 11 22:26:24 2022 +0200

    cambio nombre a captura

commit c9351e3335a09390db738816bee442d08796fade
Author: Victorhck <victorhck@mailbox.org>
Date:   Mon Jul 11 22:25:00 2022 +0200

    README

commit ebb8995f0a88947196c382424a721e725250f9d3
Author: Victorhck <victorhck@mailbox.org>
Date:   Mon Jul 11 22:22:53 2022 +0200

    README


Esta es la salida de git log --raw:

commit 87032736eccc70dae296993110b2530a81385d0b (HEAD -> main, origin/main, origin/HEAD)
Author: Victorhck <victorhck@mailbox.org>
Date:   Fri Sep 23 17:11:40 2022 +0200

    añadir enlace al artículo de mi blog

:100644 100644 cc0b110 2b72f55 M        README.md

commit bef5764b03177f668137cca80b02bbf276f65ead
Author: Victorhck <victorhck@mailbox.org>
Date:   Sun Jul 17 18:49:26 2022 +0200

    corregir README

:100644 100644 723b3b0 cc0b110 M        README.md

commit c686c803ffd658fb0783d81621a1d60107265f3f
Author: Victorhck <victorhck@mailbox.org>
Date:   Mon Jul 11 22:27:18 2022 +0200

    cambio nombre a captura en README

:100644 100644 904cce1 723b3b0 M        README.md

commit c95df01ab35d9525e9d0513c44cad7ca4bff35a6
Author: Victorhck <victorhck@mailbox.org>
Date:   Mon Jul 11 22:26:24 2022 +0200

    cambio nombre a captura

:100644 100644 0a1832d 0a1832d R100     captura.png     pantallazo.png

commit c9351e3335a09390db738816bee442d08796fade
Author: Victorhck <victorhck@mailbox.org>
Date:   Mon Jul 11 22:25:00 2022 +0200

    README

:100644 100644 fdc3a93 904cce1 M        README.md

Esto le indica exactamente qué archivo se agregó al commit y cómo se modificó el archivo (A para añadido, M para modificado, R para renombrado y D para eliminado).

Git whatchanged

El comando git whatchanged es un comando heredado anterior a la función de log. Su documentación dice que no está destinado a ser usado en favor de git log --raw lo que implica que está esencialmente en desuso.

Sin embargo, todavía lo encuentro un atajo útil para (principalmente) el mismo resultado (aunque se excluyen los commits de fusión (merge)), y anticipo crear un alias para él en caso de que alguna vez se elimine.

Si no necesitas fusionar (merge) commits en tu log (y probablemente no lo necesites, si solo estás buscando ver qué archivos cambiaron), prueba git whatchanged como un nombre fácil de recordar.

Ver cambios

No solo puedes ver qué archivos cambiaron, si no que también puedes hacer que git log muestre exactamente los cambios en esos archivos. Git log puede mostrar las diferencias en una línea, mostrarlos línea a línea de todos los cambios de cada archivo con la opción --patch:

commit 87032736eccc70dae296993110b2530a81385d0b (HEAD -> main, origin/main, origin/HEAD)
Author: Victorhck <victorhck@mailbox.org>
Date:   Fri Sep 23 17:11:40 2022 +0200

    añadir enlace al artículo de mi blog

:100644 100644 cc0b110 2b72f55 M        README.md

diff --git a/README.md b/README.md
index cc0b110..2b72f55 100644
--- a/README.md
+++ b/README.md
@@ -10,6 +10,8 @@ A partir de ese código y por diversión y para aprender, le añadí colorines y
 
 Si la consola donde se ejecuta no tiene el ancho para que se vea la información en dos columnas, la salida no se mostrará en una única columna.
 
+_Enlace al artículo en [mi blog](https://victorhckinthefreeworld.com/2022/07/11/script-en-bash-que-muestra-el-top10-de-procesos-que-consumen-ram-y-cpu/)_
+
 ## Instalación
 
 * Descarga el script ejecutando: `wget https://codeberg.org/victorhck/top10/raw/branch/main/t10` 

commit bef5764b03177f668137cca80b02bbf276f65ead
Author: Victorhck <victorhck@mailbox.org>
Date:   Sun Jul 17 18:49:26 2022 +0200

    corregir README

:100644 100644 723b3b0 cc0b110 M        README.md

diff --git a/README.md b/README.md
index 723b3b0..cc0b110 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ La idea principal del script está sacada de un script que Fanta compartió en s
 
 A partir de ese código y por diversión y para aprender, le añadí colorines y formatee la salida para que se viera en columnas, una al lado de la otra.
 
-Si la consola donde se ejecuta no tiene el ancho para que se vea todo, la salida no se mostrará en una única columna, si no se mostrará en dos.
+Si la consola donde se ejecuta no tiene el ancho para que se vea la información en dos columnas, la salida no se mostrará en una única columna.
 
 ## Instalación
 


Estos parches se pueden usar con utilidades comunes de Unix como diff y patch, en caso de que se necesite realizar los mismos cambios manualmente en otro lugar. Los parches también son una buena manera de resumir las partes importantes de la información nueva que introduce un commit específico.

Esta es una descripción general valiosa cuando se ha cometido un error. Para encontrar la causa del error más rápido, puedes ignorar las partes de un archivo que no cambiaron y revisar unicamente el código nuevo.

Comandos simples para resultados complejos

No es necesario saber sobre referencias y ramas y hashes de commits para ver qué archivos cambiaron en un commit.

El log de Git se diseñó para informar sobre la actividad de Git, y si deseas formatearlo de una manera específica o extraer información específica, a menudo es cuestión de navegar a través de muchas pantallas de documentación para conseguir el comando correcto que te muestre la información que deseas. (En mi caso utilizo: git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=re
lative
)

Afortunadamente, una de las solicitudes más comunes sobre el log de Git está disponible con solo una o dos opciones.: --raw y --patch. Y si no te acuerdas de --raw, simplemente piensa (en inglés), «Git, ¿qué cambió?» y escribe git whatchanged.

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.