Git: diferencia entre HEAD, árbol de trabajo e índice

Git como sistema de control de versiones gestiona y manipula tres árboles en su funcionamiento normal:

  • HEAD: última instantánea de confirmación, siguiente padre
  • Índice: siguiente instantánea de confirmación propuesta 
  • Directorio de trabajo: Sandbox

Cabeza

HEAD es el puntero a la referencia de la rama actual, que a su vez es un puntero a la última confirmación realizada en esa rama. Eso significa que HEAD será el padre de la próxima confirmación que se cree. En general, es más simple pensar en HEAD como la instantánea de su última confirmación en esa rama.

¿Qué contiene?

Use git ls-files -s para ver cómo se ve. Debería ver algo como esto:

100644 a906cb2a4a904a152e80877d4088654daad0c859 0 README   
100644 8f94139338f9404f26296befa88755fc2598c289 0 Rakefile  
100644 47c6340d6459e05787f644c2447d2595f5d3a54b 0 lib/simplegit.rb

Árbol de trabajo

Aquí es donde residen sus archivos y donde puede probar los cambios antes de enviarlos a su área de ensayo (índice) y luego al historial.

Veamos cómo funcionan estos tres árboles juntos.

El flujo de trabajo típico de Git es registrar instantáneas de su proyecto en estados sucesivamente mejores, mediante la manipulación de estos tres árboles. Echa un vistazo a esta imagen:

Flujo de trabajo típico de Git

Para obtener una buena comprensión visualizada, considere este escenario. Digamos que ingresa a un nuevo directorio con un solo archivo. Llame a este v1 del archivo. Se indica en azul. Ejecutar git init creará un repositorio Git con una referencia HEAD que apunta a la rama maestra no nacida

En este punto, solo el árbol de directorios de trabajo tiene contenido. Ahora queremos confirmar este archivo, por lo que usamos git add para tomar contenido en el directorio de trabajo y copiarlo en el índice.

Luego ejecutamos git commit , que toma el contenido del índice y lo guarda como una instantánea permanente, crea un objeto de confirmación que apunta a esa instantánea y actualiza master para apuntar a esa confirmación.

Si ejecutamos git status, no veremos cambios, porque los tres árboles son iguales.

Consejo: recuerda cierto punto clave de la siguiente manera: 

git status muestra la diferencia entre estos árboles de la siguiente manera:

  • Si el árbol de trabajo es diferente del índice, el estado de git mostrará que hay algunos cambios que no están preparados para la confirmación
  • Si el árbol de trabajo es el mismo que el índice, pero son diferentes de HEAD, entonces el estado de git mostrará algunos archivos en la sección de cambios para confirmar en su resultado
  • Si el árbol de trabajo es diferente del índice, y el índice es diferente de HEAD, entonces el estado de git mostrará algunos archivos en los cambios no preparados para la sección de confirmación y algunos otros archivos en la sección de cambios para confirmar en su resultado.

Publicación traducida automáticamente

Artículo escrito por sounaksaha999 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 *