Trabajando con archivos y el área de preparación (staging area)

GitGitBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

¡Bienvenido de nuevo, aspirante a viajero del tiempo! Ahora es el momento de elevar tus habilidades en Git y explorar el fascinante mundo del área de preparación (staging area).

En este laboratorio, profundizaremos en las capacidades de gestión de archivos de Git. Aprenderás cómo agregar y eliminar archivos de tu proyecto, ignorar archivos que no deseas seguir (track), ver los cambios antes de confirmarlos (commit) e incluso deshacer cambios si cometemos un error. Estas habilidades son como actualizar tu máquina del tiempo: te darán más control y flexibilidad mientras navegas por la línea de tiempo de tu proyecto.

Al final de este laboratorio, tendrás una mejor comprensión del área de preparación (staging area) de Git y cómo te ayuda a crear confirmaciones (commits) más organizadas y significativas. ¡Así que enciéndamos nuestras terminales y emprendamos este emocionante viaje!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git/SetupandConfigGroup -.-> git/git("Show Version") git/SetupandConfigGroup -.-> git/init("Initialize Repo") git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/DataManagementGroup -.-> git/restore("Revert Files") subgraph Lab Skills git/git -.-> lab-387457{{"Trabajando con archivos y el área de preparación (staging area)"}} git/init -.-> lab-387457{{"Trabajando con archivos y el área de preparación (staging area)"}} git/add -.-> lab-387457{{"Trabajando con archivos y el área de preparación (staging area)"}} git/status -.-> lab-387457{{"Trabajando con archivos y el área de preparación (staging area)"}} git/diff -.-> lab-387457{{"Trabajando con archivos y el área de preparación (staging area)"}} git/restore -.-> lab-387457{{"Trabajando con archivos y el área de preparación (staging area)"}} end

Configurando tu espacio de trabajo

Comencemos creando un nuevo directorio para este laboratorio. Abre tu terminal y escribe estos comandos:

cd ~/project
mkdir git-staging-lab
cd git-staging-lab
git init

Estos comandos crean un nuevo directorio llamado git-staging-lab, te mueven dentro de él e inicializan un nuevo repositorio de Git.

Ahora, creemos un sencillo script de Python con el que trabajar:

echo "print('Hello, Git!')" > hello.py

Este comando crea un archivo llamado hello.py con una sencilla declaración de impresión en Python.

Agregando archivos al área de preparación (staging area)

Ahora que tenemos nuestro archivo hello.py, agreguémoslo al área de preparación (staging area). El área de preparación es como una zona de preparación donde recopilas todos los cambios que deseas incluir en tu próxima confirmación (commit).

Ejecuta el siguiente comando:

git add hello.py

Este comando le dice a Git que comience a seguir (track) el archivo hello.py e incluya en la próxima confirmación (commit).

Ahora, veamos el estado de nuestro repositorio:

git status

Deberías ver una salida similar a esta:

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   hello.py

Esta salida nos dice que hello.py ahora está en el área de preparación (staging area), listo para ser confirmado (committed).

¿Por qué necesitamos un área de preparación? Imagina que estás empacando para un viaje. El área de preparación es como tu maleta: puedes agregar objetos (cambios) a ella, quitar objetos si cambias de opinión y, cuando estés satisfecho con todo lo que hay en la maleta, la cierras (haces una confirmación). Esto te permite seleccionar cuidadosamente lo que va en cada confirmación, lo que hace que la historia de tu proyecto sea más organizada y significativa.

Ignorando archivos con.gitignore

A veces, hay archivos que no quieres que Git siga (track), como archivos temporales o información sensible. Git te permite ignorar estos archivos utilizando un archivo especial llamado .gitignore.

Creemos un archivo .gitignore:

echo "*.log" > .gitignore

Este comando crea un archivo .gitignore que le dice a Git que ignore cualquier archivo con extensión .log.

Ahora, creemos un archivo de registro (log) para probar nuestro .gitignore:

echo "This is a log file" > debug.log

Verifica el estado de tu repositorio:

git status

Deberías ver que debug.log no está listado en la salida, pero .gitignore sí:

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   hello.py

Untracked files:
  (use "git add <file>..." to include in what will be committed)
       .gitignore

El archivo .gitignore es muy poderoso. Puede ignorar archivos específicos, directorios enteros o utilizar coincidencia de patrones para ignorar archivos que cumplan ciertos criterios. Esto es increíblemente útil en proyectos del mundo real donde puedas tener artefactos de compilación (build artifacts), archivos de caché o archivos de configuración específicos del entorno que no deberían formar parte de tu repositorio de Git.

Agreguemos y confirmemos (commit) nuestros cambios:

git add.gitignore
git commit -m "Initial commit with hello.py and.gitignore"

Viendo cambios con git diff

A medida que tu proyecto crece, a menudo querrás revisar tus cambios antes de confirmarlos (commit). Git proporciona un comando poderoso para esto: git diff.

Modifiquemos nuestro archivo hello.py:

echo "print('Hello, Git! Welcome to the staging area.')" > hello.py

Ahora, usemos git diff para ver qué ha cambiado:

git diff

Deberías ver una salida similar a esta:

diff --git a/hello.py b/hello.py
index ed51d3f..1385fe3 100644
--- a/hello.py
+++ b/hello.py
@@ -1 +1 @@
-print('Hello, Git!')
+print('Hello, Git! Welcome to the staging area.')

Esta salida nos muestra exactamente qué ha cambiado en nuestro archivo. La línea con - muestra lo que se ha eliminado, y la línea con + muestra lo que se ha agregado.

git diff es como el libro de registro de una máquina del tiempo. Te permite ver los cambios exactos que has realizado, lo cual es increíblemente útil cuando estás tratando de recordar lo que has hecho o cuando estás revisando cambios antes de una confirmación (commit). git diff --staged es otra variante útil de este comando. Muestra los cambios que has preparado (staged) pero aún no has confirmado. Esto es útil cuando quieres revisar tus cambios antes de hacer una confirmación.

Presiona q para salir de la vista de git diff.

Deshacer la preparación (unstage) de cambios

A veces, es posible que agregues un archivo al área de preparación (staging area) y luego cambies de opinión. Git te permite deshacer la preparación de cambios fácilmente.

Primero, preparemos (stage) nuestros cambios en hello.py:

git add hello.py

Ahora, supongamos que hemos cambiado de opinión y no queremos incluir estos cambios en nuestra próxima confirmación (commit). Podemos deshacer la preparación del archivo utilizando el comando git restore:

git restore --staged hello.py

Veamos el estado:

git status

Deberías ver que hello.py ahora está listado bajo "Changes not staged for commit" en lugar de "Changes to be committed".

Esta capacidad de mover archivos dentro y fuera del área de preparación te da un control detallado sobre tus confirmaciones. Es como poder empacar y desempacar tu maleta tantas veces como quieras antes de partir en tu viaje.

Resumen

¡Felicidades, explorador de Git! Acabas de subir de nivel tus habilidades de control de versiones. Repasemos lo que has aprendido en este laboratorio:

  1. Cómo agregar archivos al área de preparación (staging area) utilizando git add
  2. Cómo ignorar archivos que no quieres seguir (track) utilizando .gitignore
  3. Cómo ver los cambios en tus archivos antes de confirmarlos (commit) con git diff
  4. Cómo deshacer la preparación (unstage) de cambios utilizando git restore --staged

Estas habilidades te dan mucho más control sobre tu flujo de trabajo de Git. El área de preparación, en particular, es una función poderosa que te permite crear confirmaciones más significativas al seleccionar cuidadosamente qué cambios incluir.

He aquí por qué estas habilidades son tan importantes:

  1. Confirmaciones selectivas: El área de preparación te permite confirmar solo algunos de tus cambios, lo que te ayuda a crear confirmaciones más pequeñas y enfocadas.
  2. Ignorar archivos: .gitignore ayuda a mantener tu repositorio limpio al excluir archivos que no necesitan ser controlados por versiones.
  3. Revisar cambios: git diff te permite revisar tus cambios antes de confirmarlos, lo que te ayuda a detectar errores temprano.
  4. Flexibilidad: La capacidad de deshacer la preparación de cambios te da la libertad de cambiar de opinión, lo que hace que Git sea menos intimidante de usar.

A medida que continúes tu viaje con Git, encontrarás que estas habilidades son invaluable. Forman la base de un flujo de trabajo de Git más avanzado, que te permite administrar proyectos complejos con facilidad.

Recuerda, dominar Git requiere práctica. No temas experimentar y cometer errores, ¡así es como aprendemos! Sigue explorando, sigue confirmando (committing) y observa cómo tus proyectos evolucionan con el tiempo.

Tu próxima aventura en el mundo de Git está a la vuelta de la esquina. Mantén viva tu curiosidad y ¡feliz codificación!