Conceptos clave

Directorio de trabajo

El directorio de trabajo (working tree, a veces traducido literalmente como árbol de trabajo, y también llamado copia de trabajo) representa los archivos y directorios de tu proyecto que puedes editar, eliminar y organizar en tu ordenador. El directorio de trabajo es donde haces cambios en tus archivos antes de decidir si vas a incluir esos cambios en un commit de tu repositorio.

Ejemplo

Imagina que estás trabajando en un proyecto de aplicación web. Tu proyecto está bajo control de versiones con Git, y ves algo así en tu explorador de archivos:

project-root/
  ├── .git/
  ├── src/
  │   ├── components/
  │   │   ├── header.js
  │   │   └── footer.js
  │   ├── utils/
  │   │   └── helpers.js
  │   └── main.js
  ├── index.html
  ├── styles.css
  ├── app.js
  └── config.json

P: Entonces, ¿por qué en inglés se llama working tree (árbol de trabajo)?

R: En inglés, working tree significa literalmente "árbol de trabajo". La palabra "árbol" viene de que Git representa los archivos y directorios como una estructura jerárquica: directorios que se ramifican en otros directorios y archivos. En español usaremos casi siempre directorio de trabajo, porque suena más natural y evita mezclar este concepto con otros árboles internos de Git.

El directorio .git contiene todos los metadatos y la base de datos de objetos del repositorio Git. Está oculto en la vista normal de archivos del proyecto porque no está pensado para que interactúes con él directamente. Aun así, cuando trabajas en la terminal, a menudo puedes ver este directorio listado.

El resto de archivos y directorios (como src/, index.html, styles.css, etc.) forman tu directorio de trabajo. Puedes editar estos archivos, añadir otros nuevos o eliminar los existentes cuando lo necesites. Son los archivos cuyos cambios sigue Git.

Cómo funciona

Git lleva la cuenta de las diferencias entre los archivos de tu directorio de trabajo y el último commit de tu rama actual. Esto te permite editar, añadir y eliminar archivos libremente en tu directorio de trabajo sin afectar de inmediato al historial de commits del repositorio. Cuando los cambios te cuadren, puedes añadirlos al área de preparación (con un comando como git add) y después crear un commit nuevo, conservando una instantánea en el historial del proyecto.

Cuando cambias a una rama o a un commit concreto, los archivos de tu directorio de trabajo se actualizan para coincidir con el estado del repositorio en ese punto. Después puedes hacer cambios en esos archivos, como añadir funcionalidades nuevas, corregir bugs o mejorar la base de código.

El directorio de trabajo es importante porque:

  • Te da una vista tangible y editable de tu proyecto en su estado actual o en cualquier rama que tengas seleccionada.
  • Te permite trabajar en los archivos de tu proyecto y probar tus cambios antes de decidir si quieres crear un commit nuevo.
  • Te permite ver de inmediato en tu sistema de archivos los efectos de cambiar de rama o de traer cambios e integrarlos desde un repositorio remoto.

Comandos relacionados

Comprueba el estado del directorio de trabajo:

git status

Comprueba las diferencias entre el directorio de trabajo y el último commit:

git diff

Descarta cambios en un archivo dentro del directorio de trabajo:

git restore path/to/file.txt

Añade todos los cambios del directorio actual (.) al área de preparación:

git add .