¿Cuáles son las tres áreas de Git y cómo se mueve un cambio entre ellas?
Ver respuesta — intenta responderla en voz alta primero
Son el working directory (tu carpeta de trabajo, donde editas los archivos), el staging area o index (la zona de preparación donde eliges qué va en el próximo commit) y el repositorio (el .git, donde quedan guardados los commits). Un cambio pasa de working a staging con git add, y de staging al repositorio con git commit.
Este es el modelo mental más importante de Git. Entenderlo bien resuelve la mayoría de las dudas.
- Working directory: la carpeta con tus archivos. Aquí editas, creas y borras. Los cambios aquí todavía no están "guardados" en Git.
- Staging area (index): una zona intermedia donde pones los cambios que quieres incluir en el próximo commit. Sirve para armar commits limpios: puedes preparar solo algunos archivos y dejar otros fuera.
- Repositorio (
.git): donde Git guarda las fotos (commits) de forma permanente en el historial.
El flujo es: editas en el working directory, eliges qué guardar con git add (pasa a staging), y confirmas con git commit (pasa al repositorio).
# 1. Editas un archivo en el working directory (por ejemplo, creas index.html)
# 2. Ves el estado: index.html aparece como "untracked" o "modified"
git status
# 3. Mueves el cambio al staging area
git add index.html
# Ahora git status lo muestra en verde, bajo "Changes to be committed"
# 4. Confirmas: el cambio pasa del staging al repositorio como un commit
git commit -m "Agrega la página inicial"
# Salida: [main abc1234] Agrega la página inicial
# git diff -> muestra cambios del working directory que NO están en staging
# git diff --staged -> muestra cambios del staging que aún NO se han commiteado
Pensar que git commit guarda todo lo que cambiaste. En realidad, commit solo guarda lo que está en el staging area. Si editaste un archivo pero no hiciste git add, ese cambio no entra en el commit. Por eso a veces la gente "commitea" y su cambio no aparece: se les olvidó el add.
"Git tiene tres áreas: el working directory, donde edito los archivos; el staging area o index, donde preparo lo que quiero incluir en el próximo commit; y el repositorio, el
.git, donde quedan guardados los commits. El flujo es: edito, hagogit addpara pasar los cambios a staging, ygit commitpara guardarlos en el repositorio. El staging me permite armar commits limpios eligiendo exactamente qué incluir."
Editaste dos archivos, a.txt y b.txt, pero solo hiciste git add a.txt y luego git commit. ¿Qué le pasa a b.txt?
Ver respuesta
b.txt no entra en el commit: sus cambios se quedan en el working directory como "modified", fuera de staging. El commit solo incluye lo que estaba en el staging area, es decir, a.txt. b.txt seguirá pendiente hasta que hagas git add b.txt y otro commit.