Cómo comprobar si un repositorio de Git tiene un hash de commit 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 verificar si un repositorio de Git tiene un hash de commit específico. Exploraremos el comando git rev-parse para obtener el hash completo a partir de un hash corto u otras referencias de Git, lo que proporciona una forma inequívoca de identificar commits.

A continuación, utilizarás el comando git show para verificar la existencia y ver los detalles de un commit utilizando su hash. Finalmente, cubriremos cómo manejar escenarios que involucren hashes de commit inválidos o inexistentes.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/status -.-> lab-560082{{"Cómo comprobar si un repositorio de Git tiene un hash de commit específico"}} git/diff -.-> lab-560082{{"Cómo comprobar si un repositorio de Git tiene un hash de commit específico"}} git/log -.-> lab-560082{{"Cómo comprobar si un repositorio de Git tiene un hash de commit específico"}} end

Ejecutar git rev-parse para un Commit

En este paso, aprenderemos cómo utilizar el comando git rev-parse para obtener el hash completo de un commit. Esto es útil cuando necesitas el identificador exacto de un punto específico en la historia de tu proyecto.

Primero, asegúrate de estar en el directorio de tu proyecto. Abre tu terminal y navega hasta el directorio my-time-machine:

cd ~/project/my-time-machine

Ahora, obtengamos el hash corto de nuestro último commit utilizando git log --oneline. Este comando muestra una vista condensada de la historia de tus commits.

git log --oneline

Deberías ver una salida similar a esta:

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

La parte a1b2c3d es el hash corto de tu commit. Si bien esto suele ser suficiente para el uso diario, a veces necesitas el identificador completo y único.

Aquí es donde entra en juego git rev-parse. Podemos usarlo para obtener el hash completo a partir del hash corto. Reemplaza a1b2c3d con el hash corto que viste en la salida de git log --oneline:

git rev-parse a1b2c3d

Deberías ver el hash completo impreso en la terminal, algo como esto:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t

El comando git rev-parse es un comando de bajo nivel que se utiliza a menudo en scripting. Puede analizar varios tipos de referencias de Git (como nombres de ramas, etiquetas o hashes cortos) y mostrar la ID del objeto correspondiente (el hash completo).

Comprender cómo obtener el hash completo es importante porque proporciona una forma inequívoca de referirse a un commit específico, independientemente de si las ramas o las etiquetas se mueven.

Usar git show para Verificar el Hash

En el paso anterior, aprendimos cómo obtener el hash completo de un commit utilizando git rev-parse. Ahora, usemos el comando git show para ver los detalles de ese commit específico utilizando su hash.

Asegúrate de que todavía estés en el directorio ~/project/my-time-machine.

El comando git show se utiliza para mostrar información sobre varios tipos de objetos de Git, incluyendo commits. Cuando proporcionas un hash de commit a git show, mostrará el mensaje del commit, el autor, la fecha y los cambios introducidos por ese commit.

Usemos el hash completo que obtuvimos en el paso anterior con git show. Reemplaza a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t con el hash completo real de tu commit:

git show a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t

Deberías ver una salida similar a esta, que muestra los detalles de tu primer commit:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t
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..a1b2c3d
--- /dev/null
+++ b/message.txt
@@ -0,0 +1 @@
+Hello, Future Me

Esta salida confirma que el hash que utilizaste corresponde al commit en el que agregamos el archivo message.txt con el contenido "Hello, Future Me".

Usar git show con un hash de commit es una forma poderosa de inspeccionar la historia de tu proyecto. Puedes usarlo para ver exactamente qué cambios se hicieron en cualquier commit dado, lo cual es invaluable para depurar o entender cómo evolucionó un proyecto.

Recuerda, puedes usar tanto el hash completo como un prefijo suficientemente largo del hash (por lo general, 7 caracteres son suficientes, pero el hash completo siempre está garantizado que sea único) con git show.

Manejar Hashes Inválidos

En los pasos anteriores, usamos con éxito un hash de commit válido con git rev-parse y git show. Pero, ¿qué sucede si proporcionas un hash inválido o inexistente? Git está diseñado para darte retroalimentación cuando no puede encontrar el objeto que estás buscando.

Asegúrate de que todavía estés en el directorio ~/project/my-time-machine.

Intentemos usar git show con un hash que no existe. Simplemente escribiremos una cadena aleatoria de caracteres que parezca un hash:

git show deadbeef

Deberías ver un mensaje de error similar a este:

fatal: bad object deadbeef

Este mensaje te dice que Git no pudo encontrar un objeto (en este caso, un commit) con el hash deadbeef. Esta es la forma en que Git te hace saber que la referencia que proporcionaste no es válida en este repositorio.

Del mismo modo, si intentas usar git rev-parse con un hash inválido, obtendrás un error:

git rev-parse invalidhash

La salida será similar:

fatal: ambiguous argument 'invalidhash': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

Este mensaje de error es un poco más detallado, sugiriendo que Git no pudo interpretar invalidhash como una revisión conocida o una ruta de archivo.

Comprender estos mensajes de error es importante. Cuando encuentres un error de "objeto incorrecto" o "revisión desconocida", generalmente significa que el hash de commit, el nombre de la rama o la etiqueta que estás intentando usar no existe en la historia de tu repositorio actual. Vuelve a comprobar el hash o la referencia que estás usando para asegurarte de que sea correcto.

Este paso demuestra que Git es estricto con las referencias que proporcionas. Usar hashes válidos es crucial para navegar y manipular la historia de tu proyecto de manera precisa.

Resumen

En este laboratorio (lab), aprendimos cómo comprobar si un repositorio de Git tiene un hash de commit específico. Comenzamos utilizando el comando git rev-parse para obtener el hash completo de un commit a partir de su hash corto, comprendiendo su función en el análisis (parsing) de referencias de Git y en proporcionar identificadores de objetos inequívocos.

A continuación, exploramos el comando git show para verificar la existencia y ver los detalles de un commit utilizando su hash. Este proceso nos permite confirmar que un commit específico está presente en la historia del repositorio.