Cómo verificar si un commit de Git está firmado

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 verificar si un commit de Git está firmado. La firma de commits es una práctica crucial para verificar la autenticidad e integridad de la historia de tu proyecto.

A través de pasos prácticos, explorarás cómo usar el comando git log --show-signature para ver la información de firma de los commits y el comando git verify-commit para verificar la firma de un commit específico. También aprenderás cómo probar e identificar commits no firmados, obteniendo una comprensión integral de cómo garantizar la confiabilidad de tu repositorio de Git.


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/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560065{{"Cómo verificar si un commit de Git está firmado"}} git/status -.-> lab-560065{{"Cómo verificar si un commit de Git está firmado"}} git/commit -.-> lab-560065{{"Cómo verificar si un commit de Git está firmado"}} git/log -.-> lab-560065{{"Cómo verificar si un commit de Git está firmado"}} end

Ejecutar git log --show-signature

En este paso, exploraremos cómo ver las firmas de los commits utilizando el comando git log. La firma de commits es una forma de verificar la identidad de la persona que realizó un commit, agregando una capa adicional de confianza a la historia de tu proyecto.

Primero, navega hasta el directorio de tu proyecto si aún no estás allí. Recuerda, nuestro proyecto está ubicado en ~/project/my-time-machine.

cd ~/project/my-time-machine

Ahora, veamos el registro de commits con la opción --show-signature. Esta opción le dice a Git que muestre la información de firma de cada commit si existe.

git log --show-signature

Deberías ver el registro de tu commit anterior, y dado que aún no hemos configurado la firma de commits, no verás ninguna información de firma mostrada. La salida se verá similar a esto:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

El comando git log --show-signature es esencial para verificar la autenticidad de los commits en un proyecto. Cuando trabajas en un equipo o contribuyes a proyectos de código abierto, las firmas de commits ayudan a garantizar que los commits que estás revisando o utilizando provengan de fuentes confiables. Sin firmas, es más difícil estar seguro del origen de los cambios.

En los siguientes pasos, aprenderemos cómo configurar Git para firmar tus commits y cómo verificar esas firmas.

Utilizar git verify-commit para verificar

En este paso, aprenderemos cómo utilizar el comando git verify-commit para verificar la firma de un commit específico. Este comando es útil cuando quieres verificar la autenticidad de un solo commit en lugar de ver el estado de firma de todos los commits en el registro.

Primero, asegúrate de estar en el directorio de tu proyecto:

cd ~/project/my-time-machine

Para utilizar git verify-commit, necesitas el hash del commit (el identificador único) del commit que quieres verificar. Puedes obtener este hash de la salida de git log. Para nuestro primer commit, el hash será una larga cadena de caracteres. Solo necesitas los primeros caracteres (generalmente 7 son suficientes) para identificar el commit.

Obtengamos el hash del commit utilizando git log --oneline:

git log --oneline

Esto mostrará una salida de registro simplificada, como esta:

a1b2c3d (HEAD -> master) Send a message to the future

La parte a1b2c3d es el hash corto del commit. Copia este hash.

Ahora, utiliza el comando git verify-commit seguido del hash del commit. Reemplaza YOUR_COMMIT_HASH con el hash real que copiaste:

git verify-commit YOUR_COMMIT_HASH

Dado que nuestro commit no estaba firmado, probablemente verás una salida que indique que no hay firma o que la firma no se pudo verificar. Esto es lo esperado porque aún no hemos configurado Git para firmar commits. La salida podría verse algo así:

object YOUR_COMMIT_HASH
type commit
tag -1
tree 8a9b0c1d2e3f4g5h6i7j8k9l0m1n2o3p4q5r6s7t
parent u1v2w3x4y5z6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
author Jane Doe <[email protected]> 1678886400 +0000
committer Jane Doe <[email protected]> 1678886400 +0000

Send a message to the future

El comando git verify-commit es una herramienta poderosa para inspeccionar los detalles de un commit, incluyendo su estado de firma. Te ayuda a confirmar que un commit no ha sido manipulado y que proviene de una fuente confiable, lo cual es crucial para mantener la integridad de la historia de tu proyecto.

En el siguiente paso, crearemos un nuevo commit y veremos cómo Git maneja los commits no firmados cuando intentamos verificarlos.

Probar commits no firmados

En este paso, crearemos otro commit sin firma y observaremos cómo Git lo maneja cuando utilizamos los comandos de verificación que aprendimos en los pasos anteriores. Esto reforzará tu comprensión de cómo Git identifica los commits no firmados.

Primero, asegúrate de estar en el directorio de tu proyecto:

cd ~/project/my-time-machine

Agreguemos otra línea a nuestro archivo message.txt:

echo "This is a second message." >> message.txt

El operador >> agrega el texto al archivo existente. Ahora, veamos el estado:

git status

Deberías ver que message.txt ha sido modificado:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

no changes added to commit (use "git add" and/or "git commit -a")

Ahora, preparemos los cambios y creemos un nuevo commit. No firmaremos este commit.

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

Verás una salida que confirma el nuevo commit:

[master a1b2c3d] Add a second message
 1 file changed, 1 insertion(+)

Ahora que tenemos un segundo commit no firmado, usemos git log --show-signature de nuevo para ver la historia:

git log --show-signature

Verás ambos commits en el registro. Ninguno mostrará información de firma porque aún no hemos configurado la firma.

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Add a second message

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

    Send a message to the future

Finalmente, usemos git verify-commit en el nuevo commit. Obtén el hash corto del último commit usando git log --oneline y reemplaza YOUR_NEW_COMMIT_HASH a continuación:

git log --oneline
a1b2c3d (HEAD -> master) Add a second message
u1v2w3x Send a message to the future

Ahora verifica el nuevo commit:

git verify-commit YOUR_NEW_COMMIT_HASH

Nuevamente, la salida mostrará los detalles del commit pero no el estado de verificación de la firma, lo que confirma que este commit también no está firmado.

Este paso demuestra que, por defecto, los commits de Git no están firmados. Para agregar una capa de seguridad y confianza, debes configurar explícitamente Git para firmar tus commits, lo cual es un tema más avanzado que no cubriremos en este laboratorio introductorio. Sin embargo, entender cómo identificar los commits no firmados usando git log --show-signature y git verify-commit es el primer paso para trabajar con commits firmados.

Resumen

En este laboratorio, aprendimos cómo verificar si los commits de Git están firmados. Comenzamos utilizando el comando git log --show-signature para ver el estado de firma de todos los commits en la historia del proyecto. Este comando es crucial para evaluar rápidamente la autenticidad de los commits.

A continuación, exploramos el comando git verify-commit, que nos permite verificar la firma de un commit específico utilizando su hash. Esto es útil para verificaciones específicas. Finalmente, probamos commits no firmados para entender cómo se ven cuando se buscan firmas. Estos pasos proporcionan una comprensión básica de cómo verificar la autenticidad de los commits en Git.