Git: modelo de objetos

Cuando trabajamos con git, el primer comando que usamos para inicializar nuestro repositorio a git repository es git initdominio. Después de usar este comando, podemos ver que se crea la carpeta .git . Profundicemos en la carpeta y veamos todo lo que tenemos en la carpeta .git.

Podemos ver que tenemos muchos subdirectorios en la carpeta .git , pero el subdirectorio que deberíamos ver es el subdirectorio .git/objects . En general, la carpeta de objetos consta de cuatro tipos diferentes de objetos: blob, árbol, confirmación y etiqueta

El directorio .git/objects está vacío a partir de ahora, pero veremos algunos cambios en él y entenderemos por qué este directorio es importante para nosotros. En Git, cada confirmación, cada árbol y cada archivo se guardan en la carpeta de objetos como un valor hash. Hay un valor hash único para cada objeto que ayuda a Git a ubicarlo. Las carpetas se crean en consecuencia. Aprenderemos sobre hashes a medida que avancemos. Dado que la carpeta de objetos está vacía a partir de ahora, creemos un archivo demo.txt y escribamos «Hello Geeks» en él.

Estamos usando Ubuntu aquí, pero los usuarios de Windows pueden trabajar con git bash. Los comandos de Ubuntu se pueden ejecutar en git bash.

Ahora, agreguemos nuestros cambios al área de preparación y confirmemos nuestros cambios usando: 

git agregar demo.txt 

git commit -m «Primera confirmación»

Observemos los cambios en nuestra carpeta de objetos después de este comando.

Entonces obtuvimos nuevos directorios que tienen un nombre de 2 caracteres y un nombre de archivo de 38 caracteres.

Nota : es posible que tenga diferentes hashes en sus computadoras, por lo que no debe preocuparse si no obtiene los mismos hashes.

Git genera un hash de suma de verificación de 40 caracteres (SHA-1) para cada objeto y los primeros dos caracteres de esa suma de verificación se usan como nombre de directorio y los otros 38 como nombre de archivo.

Por lo tanto, los hashes de 40 caracteres que tenemos son:

6d 510f79378ca9954e1078a70ff4fdaaa64494fe

7c 5d8f39237365acdf66527189ba4fbb6c59b4fc

89 3f819f4a3b12c76aec907ad636edff48ffcfad

Veamos ahora cuáles son estos 3 objetos diferentes y sus tipos. Usaremos el comando – git cat-file 

Sin embargo, el comando que necesitaríamos es: 

  • git cat-file -t <valor hash>   // utilizado para mostrar el tipo de objeto
  • git cat-file -p <hash-value> // utilizado para mostrar el contenido del objeto

Revisemos el tipo de nuestros objetos – 

git cat-file -t <valor hash de 40 caracteres> //comprueba el tipo del objeto

Entonces, los tipos que tenemos son: blob, tree y commit. Vamos a entenderlos con más detalle.

1. Objeto de burbuja

Blob: objeto binario grande

Blob almacena el contenido del archivo. Cada vez que confirmamos nuestros archivos, el primer tipo de objetos que se crean son los objetos blob. Echemos un vistazo al contenido de nuestro objeto blob con la ayuda de:

git cat-file -p <valor hash del objeto blob> 

Podemos ver que obtuvimos el contenido de nuestro archivo demo.txt que escribimos inicialmente, es decir, Hello Geeks.

2. Objeto de árbol

Los objetos de árbol contienen una lista de todos los archivos en nuestro repositorio con un puntero al objeto blob asignado a ellos. Echemos un vistazo al contenido de nuestro objeto de árbol con la ayuda de:

git cat-file -p <valor hash del objeto de árbol> 

Cada línea en un objeto Tree tiene: permisos de archivo, tipo de objeto, hash de objeto y nombre de archivo . Desglosemos la línea: 

Permiso de archivo (100 644 ): los permisos de 644 significan que el propietario del archivo tiene acceso de lectura y escritura, mientras que los demás usuarios del sistema solo tienen acceso de lectura. blob representa el tipo de objeto. El hash de 40 caracteres representa el hash del objeto. Puede verificarlo con su hash de blob. demo.txt representa el nombre del archivo.

3. Objeto de compromiso

Git crea un objeto de confirmación que tiene un puntero a su objeto de árbol. El objeto de confirmación contiene: hash de objeto de árbol, hash de confirmación principal, autor, autor de confirmación, fecha y mensaje . Echemos un vistazo al contenido de nuestro objeto de confirmación con la ayuda de:

registro de git 

git cat-file -p <valor hash del objeto confirmado> 

Como se ve claramente en la imagen de arriba, el objeto de confirmación consta de: objeto de árbol, nombre del autor, nombre del autor de la confirmación y mensaje de confirmación. Ya que hemos cubierto 3 tipos diferentes de objetos, nos queda uno, es decir, Tag Object.

4. Objeto de etiqueta

Un objeto de etiqueta contiene un nombre de objeto, un tipo de objeto, un nombre de etiqueta, el nombre de la persona que creó la etiqueta y un mensaje. Hagamos una etiqueta anotada usando: 

git tag -a «primera etiqueta» -m «Etiqueta para la primera confirmación» 

Ahora revisemos nuestra carpeta de objetos para ver si el objeto de etiqueta se crea o no.

Podemos ver que se está agregando un nuevo directorio “97”. Ahora verifiquemos nuestro tipo y veamos el contenido de nuestro objeto de etiqueta.

git cat-file -t <valor hash del objeto de etiqueta>

git cat-file -p <valor hash de objeto de etiqueta>

Podemos ver que el objeto de la etiqueta apunta al objeto de confirmación (verifique usando nuestro valor hash de confirmación) como esperábamos. Espero que hayas encontrado útil este artículo. Hemos cubierto los cuatro tipos de objetos y puede probar más haciendo algunos cambios y repitiendo los pasos anteriores nuevamente.

Publicación traducida automáticamente

Artículo escrito por atharvapaliwal7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *