Conceptos clave

Área de preparación

El área de preparación (staging area), también conocida como índice, es uno de los mecanismos internos de Git que te permite elegir cambios concretos en los archivos del proyecto para guardarlos de forma permanente como parte del siguiente commit (piensa en una instantánea o un punto de control) en tu repositorio Git.

P: ¿Por qué necesitas elegir cambios concretos? ¿Por qué no guardarlo todo?

R: También puedes hacerlo, por supuesto. Pero en el trabajo real es común acabar haciendo cambios que no tienen relación entre sí, aunque tu plan inicial fuera otro.

Por ejemplo, mientras trabajas en una funcionalidad nueva, quizá te encuentres sin buscarlo con una errata en el nombre de una variable del código existente, o actualices documentación que estaba un poco floja. Esos cambios no tienen relación con la funcionalidad, y a menudo es mejor incluirlos en commits separados. Así, si más adelante necesitas deshacer esa funcionalidad, no desharás por accidente la corrección de la errata o la actualización de la documentación.

El área de preparación de Git te permite:

  1. Seleccionar cambios para incluirlos en el siguiente commit añadiendo al área de preparación solo los archivos o partes de archivos que quieras. Esto te permite crear commits enfocados y con sentido, pensados para tareas o funcionalidades concretas.

  2. Revisar cambios en el área de preparación antes de incluirlos de forma permanente en un commit, para asegurarte de que son correctos y completos. Esto ayuda a detectar modificaciones o añadidos no deseados antes de que pasen a formar parte del historial del repositorio.

  3. Trabajar de forma incremental: terminas una parte, añades los cambios al área de preparación; sigues trabajando en otras partes y después añades más cambios. Esta flexibilidad te permite construir poco a poco un conjunto de cambios estable y autocontenido.

  4. Separar el trabajo en curso de lo que ya está terminado. Si algo se tuerce, siempre puedes descartar los cambios sin preparar sin tocar los cambios preparados.

Ejemplos

Consulta el estado del área de preparación y de tu espacio de trabajo:

git status

Añade un solo archivo al área de preparación:

git add myfile.txt

Añade todos los cambios de un directorio al área de preparación:

git add src/

El carácter . de abajo apunta al directorio actual, con el significado de "todos los cambios del directorio actual". Cuando se ejecuta desde la raíz de tu repositorio, prepara todos los cambios de todo el repositorio:

git add .

Crea un commit con los cambios preparados en el historial de tu repositorio y con el mensaje indicado:

git commit -m "Add feature XYZ or fix bug ABC"

Quita todos los cambios del área de preparación (sin deshacer los cambios reales):

git restore --staged .

El carácter . vuelve a aparecer aquí; significa "quitar del área de preparación todos los cambios del directorio actual".

También puedes especificar un archivo o directorio concreto:

git restore --staged path/to/file.txt