¿Cómo estructura GIT el contenido del repositorio?
Este tutorial abarca los siguientes temas:
Un directorio .git tiene una estructura similar a la siguiente:
carpeta objects/
En este directorio, se almacenan los datos de los objetos Git – todo el contenido de los archivos que hayas insertado, tus commits, árboles (trees) y etiquetas de objeto.
- carpetas objects/[0-9a-f][0-9a-f]
Un objeto recién creado se almacena en su propio archivo. Los objetos se colocan en 256 subdirectorios utilizando los dos primeros caracteres del nombre del objeto SHA1 para mantener el número de entradas de directorio en los propios objetos en un número manejable. Los objetos que se encuentran aquí a menudo se denominan objetos sueltos o desempaquetados.
- carpeta objects/pack
En este directorio se encuentran archivos que almacenan muchos objetos en forma comprimida, junto con archivos index para permitir el acceso aleatorio a ellos.
- carpeta objects/info
En este directorio se encuentra información adicional sobre el objeto almacenado.
carpeta refs
En los subdirectorios de este directorio se almacenan referencias. El comando git prune sabe preservar los objetos accesibles desde las referencias que se encuentran en este directorio y sus subdirectorios.
- carpeta refs/heads/
Contiene objetos commit.
- carpeta refs/tags/
Contiene cualquier nombre de objeto.
- carpeta refs/remotes/
Contiene objetos commit de ramas copiadas de un repositorio remoto.
archivo packed-refs
El archivo consiste en packed heads y etiquetas. Es útil para un acceso eficiente al repositorio.
archivo HEAD
Este archivo es una referencia simbólica a la rama donde te encuentras en cada momento. Esto le indica a Git qué padre usar en tu siguiente commit.
archivo config
Este es el archivo de configuración principal de Git. Mantiene opciones de Git específicas para tu proyecto, como remotos, configuraciones push, seguimiento (track) de ramas y más. Tu configuración se cargará primero desde este archivo, luego desde el archivo ~/.gitconfigfile y luego desde el archivo /etc/gitconfig, si existen.
branches
Una forma obsoleta de almacenar abreviaturas que se utilizarán para especificar una URL para git fetch, git pull y git push. Este mecanismo es un legado y es improbable que se encuentre en los repositorios modernos.
carpeta hooks
Este directorio contiene scripts de shell que se ejecutan después de ejecutar los comandos Git correspondientes. Por ejemplo, después de que ejecutes un commit, Git tratará de ejecutar el script post-commit.
archivo index
El index de GIT se utiliza como un área de preparación entre tu directorio de trabajo y tu repositorio. Puedes utilizar el index para crear un conjunto de cambios que desees guardar juntos. Cuando creas un commit, lo que se guarda es lo que está actualmente en el index, no lo que está en tu directorio de trabajo. Es un archivo binario que contiene una lista ordenada de rutas, cada una con permisos y el SHA-1 de un objeto blob.
carpeta info
Información adicional sobre el repositorio se registra en este directorio.
carpeta remotes
Esta carpeta contiene abreviaturas para URL y refnames predeterminados para usar al interactuar con repositorios remotos a través de los comandos git fetch, git pull y git push. Este mecanismo es un legado y es improbable que se encuentre en los repositorios modernos.
carpeta logs
Almacena los cambios realizados en refs en el repositorio.
- carpeta logs/refs/heads/
Registra todos los cambios realizados en los diferentes tips de rama.
- carpeta logs/refs/tags/
Registra todos los cambios realizados en las diferentes etiquetas.
carpeta modules
Contiene los repositorios git de los submódulos.
carpeta worktrees
Contiene datos administrativos de árboles de trabajo vinculados. Cada subdirectorio contiene la parte relacionada con el árbol de trabajo de un árbol de trabajo vinculado.