¿Cuáles son los tres árboles en Git?

Git se ha convertido en el sistema más utilizado para el control de versiones y el código para compartir. Si desea ayudar a construir software de código abierto, o si desea trabajar en un equipo profesional, entender Git es una necesidad..

En una serie de cursos de Git en Envato Tuts +, expliqué algunos de los conceptos básicos de Git, todos ilustrados con animaciones útiles..

En este video, aprenderá sobre los tres árboles: HEAD, el índice y el directorio de trabajo. Observe cómo explico el rol de cada uno y cómo interactúan a medida que actualiza y confirma el código.

Conceptos básicos de Git: Los tres árboles

 

¿Cuáles son los tres árboles??

Para comprender mejor cómo funciona Git, podemos usar la metáfora de los tres árboles. Estos árboles son diferentes colecciones de archivos.. 

Para el flujo de trabajo de agregar y recuperar confirmaciones, Git usa tres versiones diferentes de archivos:

  1. el directorio de trabajo
  2. El índice
  3. algo llamado "HEAD" para crear y recuperar confirmaciones

Cada uno de estos árboles tiene un trabajo diferente: un árbol para escribir cambios, un árbol para escenificarlos y otro para señalar su último compromiso en una rama en su repositorio de Git.. 

Diferentes versiones de archivos

Los archivos cuyos contenidos se pueden cambiar están en su directorio de trabajo. Los archivos colocados en su índice se están preparando para ser empaquetados en un objeto de confirmación. Estas confirmaciones se guardan en tu repositorio Git.. 

Los archivos que ya se han confirmado son archivos comprimidos. Se procesan mediante un SHA-1, una función criptográfica de hash. Ambas versiones de archivos en el índice y los propios compromisos se guardan en el repositorio de Git, que es simplemente una rectoría .git en el nivel raíz de su ajuste.

El directorio de trabajo representa los archivos reales en el sistema de archivos de su computadora que están disponibles para su editor de código para aplicar los cambios. El directorio de trabajo es una versión de un compromiso en particular, una instantánea particular de un proyecto que verificó. Es la versión de tu historial de Git a la que HEAD apunta, en un momento dado.

"Revisado" significa que tiene las versiones descomprimidas de los archivos que se extrajeron de su repositorio Git, disponibles para su edición. El índice representa lo que se está siguiendo. También podría decir que es una lista de todos los archivos que son relevantes para su repositorio Git. 

El índice va por un par de nombres. Cuando la gente habla sobre el área de almacenamiento provisional, los archivos almacenados, el caché o el caché de directorio, todos hablan sobre el índice. Puede ver el índice como la zona de borrador para su próxima confirmación, un área temporal para preparar la próxima confirmación. 

CABEZA

HEAD es la parte de git que apunta a tus sucursales, como la rama maestra por defecto. Es una referencia, y tiene un trabajo bastante simple pero muy importante. HEAD apunta a la rama actualmente retirada, y eso a su vez apunta a la última confirmación de esa rama. HEAD puede moverse no solo en el tiempo (cuando verifica confirmaciones anteriores), sino que también se mueve cuando crea nuevas sucursales o simplemente cambia a otras..

También es el punto en su historial de Git en el que puede colocar su próximo compromiso, el padre para su próximo compromiso. Con cada confirmación nueva, reemplaza su referencia a la rama actualmente seleccionada de forma predeterminada, la rama maestra, por supuesto. 

Entonces, en efecto, HEAD es una referencia que cambia con frecuencia y apunta a dos cosas: la rama en sí misma y, a través de eso, la última confirmación en esa rama.. 

Flujo de trabajo de archivos de Git 

Veamos más de cerca el flujo de trabajo de tratar con archivos en Git. Es esencial entender cómo encajan todas estas piezas. Después de eso, tendrás un tiempo mucho más fácil para entender las características y conceptos más avanzados de Git..

Aquí hay un ejemplo:

En este ejemplo, hemos cometido dos versiones de nuestro archivo. Y puede ver que las versiones en el repositorio, el índice y el directorio de trabajo son una y la misma. Dado que estos archivos ya están rastreados, Git notará cualquier diferencia cuando cambie alguno de estos archivos rastreados en el directorio de trabajo.

Cuando corres el estado de git comando, verá una lista de archivos que se han cambiado, de color rojo. Esto indica que tiene diferencias entre su directorio de trabajo, representado por el código en su editor de código, y su índice, que representa versiones de archivos de un compromiso particular, más comúnmente el último compromiso.

Ahora puede ejecutar el git añadir comando para colocar estos cambios desde el directorio de trabajo en el índice donde se almacenaron los archivos. estado de git A continuación, mostrará los archivos que se agregan al índice de color verde. Esto significa que sus cambios están listos para ser empaquetados en un nuevo compromiso, que HEAD puede apuntar y construir sobre.

Una lista verde de archivos simplemente significa que las versiones de los archivos almacenados en el índice son diferentes de las versiones de los archivos que ya se confirmaron anteriormente. Cuando corres git commit, estos archivos almacenados se colocarán en un nuevo objeto de confirmación. los git commit El comando guardará los nombres reales de los archivos, el contenido de cada archivo, la información del autor, los metadatos y demás, en un nuevo objeto..

Este objeto de cometer, que ahora vive en un .git El directorio en su repositorio será la nueva referencia que HEAD está apuntando. Apunta a los compromisos anteriores, siendo la punta del iceberg en cierto modo. Después de haber creado nuestro objeto de confirmación, estamos de vuelta al principio del ciclo..

La confirmación a la que apunta HEAD en el repositorio vuelve a coincidir con las versiones en el índice y el directorio de trabajo, que está listo para que se realicen y confirmen nuevos cambios. Fin de la historia.

Mira más cursos de Git

Si has encontrado esto útil, ¿por qué no echa un vistazo a algunos más cursos de Git??

Puede ver nuestra Introducción a Git y GitHub o probar los otros cursos de Coffee Break de esta serie:

  • Conceptos básicos de Git: Restablecer
  • Conceptos básicos de Git: Solicitudes de extracción de GitHub
  • Fundamentos de Git: Ramas
  • Conceptos básicos de Git: Estados
  • Fundamentos de Git: Fusionar y Rebase