Cómo comprobar si un mensaje de confirmación (commit) de Git contiene texto específico

GitGitBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo buscar de manera eficiente en el historial de confirmaciones (commits) de Git para encontrar texto específico dentro de los mensajes de confirmación. Exploraremos el comando git log --grep para filtrar las confirmaciones basadas en palabras clave, lo que te permitirá encontrar rápidamente cambios relevantes en un proyecto grande.

También aprenderás cómo usar git show para examinar los detalles de una confirmación específica encontrada a través de tu búsqueda, y cómo realizar búsquedas que distingan entre mayúsculas y minúsculas con git log --grep para afinar tus resultados. Al final de este laboratorio, estarás capacitado para usar estos comandos de Git para navegar y comprender la historia de tu proyecto.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560067{{"Cómo comprobar si un mensaje de confirmación (commit) de Git contiene texto específico"}} git/commit -.-> lab-560067{{"Cómo comprobar si un mensaje de confirmación (commit) de Git contiene texto específico"}} git/diff -.-> lab-560067{{"Cómo comprobar si un mensaje de confirmación (commit) de Git contiene texto específico"}} git/log -.-> lab-560067{{"Cómo comprobar si un mensaje de confirmación (commit) de Git contiene texto específico"}} end

Usar git log --grep para buscar

En este paso, aprenderemos cómo buscar en nuestro historial de confirmaciones (commits) utilizando git log --grep. Esto es increíblemente útil cuando tienes muchas confirmaciones y necesitas encontrar una específica basada en su mensaje.

Primero, hagamos algunas confirmaciones más para que tengamos algo en lo que buscar. Agregaremos algunos mensajes más a nuestro archivo message.txt.

echo "Adding a second message." >> message.txt
git add message.txt
git commit -m "Add second message"

Deberías ver una salida similar a esta:

[master <commit-id>] Add second message
 1 file changed, 1 insertion(+)

Ahora, agreguemos un mensaje más y confirmémoslo:

echo "Adding a third message about the future." >> message.txt
git add message.txt
git commit -m "Add third message about future"

Deberías ver una salida similar a esta:

[master <commit-id>] Add third message about future
 1 file changed, 1 insertion(+)

Ahora tenemos tres confirmaciones en nuestro historial. Usemos git log para verlas todas:

git log --oneline

Deberías ver algo como esto (los IDs de confirmación serán diferentes):

<commit-id> Add third message about future
<commit-id> Add second message
<commit-id> Send a message to the future

Ahora, digamos que queremos encontrar la confirmación que menciona "future" (futuro). Podemos usar git log --grep para esto:

git log --grep "future" --oneline

Este comando le dice a Git que nos muestre solo las confirmaciones cuyos mensajes contengan la palabra "future". Deberías ver una salida similar a esta:

<commit-id> Add third message about future
<commit-id> Send a message to the future

Observa que solo se muestran las confirmaciones con "future" en su mensaje. Esta es una forma poderosa de filtrar tu historial de confirmaciones y encontrar rápidamente lo que estás buscando.

La opción --grep te permite buscar patrones específicos en los mensajes de confirmación. Esto es muy útil cuando tienes un proyecto grande con muchas confirmaciones y necesitas encontrar una confirmación relacionada con una característica específica o una corrección de error.

Ejecutar git show para una confirmación específica

En este paso, aprenderemos cómo ver los detalles de una confirmación (commit) específica utilizando el comando git show. Este comando te permite ver exactamente qué cambios se introdujeron en una confirmación en particular.

Primero, obtengamos el ID de confirmación de la primera confirmación que hicimos. Podemos usar git log --oneline nuevamente para ver la lista de confirmaciones:

git log --oneline

Mira la salida y encuentra el mensaje de confirmación "Send a message to the future". Copia el ID corto de confirmación (la cadena de letras y números antes del mensaje). Debería verse algo como a1b2c3d.

Ahora, usa el comando git show seguido del ID de confirmación que copiaste. Reemplaza <commit-id> con el ID real que copiaste:

git show <commit-id>

Deberías ver información detallada sobre esa confirmación específica, incluyendo:

  • El ID de confirmación, el autor, la fecha y el mensaje.
  • Los cambios realizados en esa confirmación. Para nuestra primera confirmación, mostrará que se creó el archivo message.txt y se agregó la línea "Hello, Future Me".

La salida se verá similar a esto (el ID de confirmación y la fecha serán diferentes):

commit <commit-id>
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

diff --git a/message.txt b/message.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/message.txt
@@ -0,0 +1 @@
+Hello, Future Me

El comando git show es increíblemente útil para entender la historia de tu proyecto. Puedes usarlo para ver exactamente qué cambios se hicieron en cualquier confirmación, lo cual es esencial para depurar o entender cómo se implementó una característica.

También puedes usar git show sin un ID de confirmación para ver los detalles de la última confirmación. Pruébalo:

git show

Esto te mostrará los detalles de la confirmación "Add third message about future".

Recuerda, puedes presionar q para salir de la vista de git show y volver a la línea de comandos.

Probar la búsqueda sensible a mayúsculas y minúsculas

En este paso, exploraremos cómo git log --grep maneja la sensibilidad a mayúsculas y minúsculas. Por defecto, la búsqueda es sensible a mayúsculas y minúsculas, lo que significa que "future" es diferente de "Future".

Intentemos buscar "Future" (con la F mayúscula) utilizando git log --grep:

git log --grep "Future" --oneline

Basándonos en nuestras confirmaciones anteriores, solo el mensaje de la primera confirmación "Send a message to the Future" contiene "Future" con la F mayúscula. La salida debería verse similar a esto:

<commit-id> Send a message to the future

Observa que la confirmación "Add third message about future" no se incluye porque utiliza una "f" minúscula.

Ahora, intentemos buscar "future" (con la f minúscula) nuevamente:

git log --grep "future" --oneline

Esta vez, ambas confirmaciones que contienen "future" (independientemente de la capitalización en el mensaje original) deberían mostrarse:

<commit-id> Add third message about future
<commit-id> Send a message to the future

¡Espera, eso no está bien! En el paso anterior se mostraron ambas confirmaciones al buscar "future". Esto se debe a que el comportamiento predeterminado de git log --grep es insensible a mayúsculas y minúsculas en algunos sistemas o configuraciones.

Para garantizar una búsqueda sensible a mayúsculas y minúsculas, puedes usar la opción --i (o --ignore-case). Intentemos buscar "Future" de manera sensible a mayúsculas y minúsculas:

git log --grep "Future" --oneline --i

Este comando le dice a Git que ignore las mayúsculas y minúsculas durante la búsqueda. Ahora, ambas confirmaciones que contienen "future" o "Future" deberían mostrarse:

<commit-id> Add third message about future
<commit-id> Send a message to the future

Esto demuestra que aunque el comportamiento predeterminado puede variar, usar la opción --i explícitamente hace que la búsqueda sea insensible a mayúsculas y minúsculas. Si necesitas una búsqueda estrictamente sensible a mayúsculas y minúsculas, normalmente confiarías en el comportamiento predeterminado sin --i. Sin embargo, dado el potencial de variación, es una buena práctica estar al tanto de la opción --i para búsquedas insensibles a mayúsculas y minúsculas.

Comprender la sensibilidad a mayúsculas y minúsculas en las búsquedas es importante para encontrar confirmaciones de manera precisa, especialmente en proyectos donde las convenciones de mensajes de confirmación pueden variar.

Resumen

En este laboratorio (lab), aprendimos cómo buscar de manera efectiva en el historial de confirmaciones (commits) de Git. Comenzamos utilizando git log --grep para filtrar las confirmaciones basadas en texto específico dentro de sus mensajes. Este poderoso comando nos permite encontrar rápidamente confirmaciones relevantes, especialmente en proyectos con un extenso historial de confirmaciones. Practicamos esto creando varias confirmaciones y luego usando --grep para encontrar aquellas que contengan la palabra "future".

También exploramos cómo ver los detalles de una confirmación específica utilizando git show y cómo realizar búsquedas sensibles a mayúsculas y minúsculas con git log --grep. Estas técnicas proporcionan herramientas esenciales para navegar y entender la evolución de un repositorio de Git.