git-ciclo-vida-archivos

El ciclo de vida de los archivos en Git

  • 6 min

En el artículo anterior inicializamos nuestro repositorio. Ahora tenemos una carpeta vigilada por Git. Pero ya dijimos que Git no empieza a guardar cosas automáticamente.

Para entender cómo usar Git, antes tenemos que entender algunos conceptos core de cómo funciona internamente, que suele confundir bastante al principio:

  1. Las 3 zonas: Los lugares físicos por donde viaja tu código antes de guardarse
  2. Los 4 estados: Las etiquetas que Git le pone a tus archivos según lo que hayas modificado

Ánimo que si entiendes esto, tienes el 50% de Git entendido. Vamos al lío 👇.

Las tres zonas de juego

Imagina que tu proyecto es está dividido en tres zonas principales:

  • Working Directory: Es tu carpeta real en el disco duro. Aquí es donde creas, editas y borras tus archivos trabajando normalmente.
  • Staging Area: Es una zona intermedia. Aquí colocas los archivos que ya están listos para guardarse en Git.
  • Repository: Es la base de datos de Git (la carpeta oculta .git). Una vez que los archivos llegan aquí, se guardan como una “foto” permanente en la historia de tu proyecto.

Los ficheros pasan de por estar tres áreas, hasta la seguridad del Repositorio, donde quedan guardados y protegidos 🔒.

La que suele costar entender es el Staging Area. Piensa en ella como una zona temporal donde “preparas tus cosas”, antes de guardarlos de verdad.

Estados de Git

A medida que tus archivos viajan por estas tres zonas, Git les va pegando diferentes etiquetas para saber en qué situación se encuentran.

Estas etiquetas son los 4 estados en los que puede estar un archivo, a ojos de Git:

Untracked: Son archivos que existen en tu disco duro pero Git no sabe nada de ellos. Si se modifican o borran el disco, Git no podrá recuperarlos.

Unmodified: El archivo está rastreado por Git y es idéntico a la versión que hay guardada en la base de datos. No hay cambios pendientes.

Modified: El archivo está rastreado, pero has cambiado algo desde la última vez que guardaste. Sin embargo, todavía no has dicho que quieras incluir ese cambio en la próxima foto.

Staged: Has modificado un archivo y lo has marcado para que vaya en el próximo commit. Está en el “área de carga”.

Simulador de Ciclo de Vida

Vamos a dejar de imaginar y vamos a verlo. Aquí tenemos un simulador que representa gráficamente lo que ocurre en las “tripas” de Git cuando mueves ficheros.

Antes de seguir viendo en el curso los comandos de Git, vamos a jugar un poco para entender bien los conceptos y lo que pasa en cada paso.

Untracked

Veras que hay dos ficheros en tu Working Directory con una etiqueta U verde.

Esto simula ficheros Untracked en tu ordenador. Git lo detecta, pero entiende que no son cosa suya.

Paso a Staged

Ahora pulsa el botón + de uno de los archivos. El archivo se “copia” a la columna central Staged Changes. Has ejecutado un git add.

Ahora el archivo está Staged. Git ha tomado una foto provisional y la ha dejado en la zona de preparación, lista para guardarla.

El Commit

Escribe un mensaje en la caja de texto del centro (ej: “Mi primer archivo”) y pulsa Commit. El archivo desaparece del centro y se registra en la columna derecha Repository y abajo en el historial.

Ahora el archivo está Unmodified. Significa que la versión que tienes en tu carpeta de trabajo es idéntica a la que hay guardada en la base de datos.

El estado Modified

Aquí viene lo interesante. Ve al simulador y busca el archivo en la columna izquierda Working Directory. Pulsa el botón del ✏️ (Edit).

La versión cambia (de v1 a v2) simulando un cambio. La etiqueta pasa a ser Modified. Git ha detectado que la versión que tiene no coincide con la que tienes.

Para guardar este cambio, tendrías que repetir el ciclo:

  • Pulsar + para subir la v2 al Stage
  • Hacer Commit para guardarla en el Repo

Estado del repositorio con git status

El comando git status sirve para saber en qué estado exacto se encuentra tu proyecto.

Cada vez que no sepas qué has tocado, qué te falta por subir o en qué estado está tu proyecto, ejecutas git status.

git status
Copied!

Git te devolverá un informe dividiendo tus archivos en grupos lógicos según las tres zonas que ya conocemos:

  1. Changes to be committed: Los archivos que están en el Staging Area, listos para el commit.
  2. Changes not staged for commit: Los archivos que están Modified, pero siguen en tu Working Directory
  3. Untracked files: Los archivos nuevos que Git está ignorando

Además, Git siempre te da pistas. Te dice exactamente qué comandos puedes usar a continuación para mover los archivos de un estado a otro (como git add o git restore)