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
.
