Introducción
Casi cada sesión de Git sigue el mismo ritmo de tres pasos: edita archivos en tu árbol de trabajo, stagea los cambios que quieres registrar y commitealos al historial. Dominar este bucle es la base de todo lo demás.
Las tres áreas
- Árbol de trabajo: archivos en disco que editas con tu editor.
- Index (también llamado el área de staging): una instantánea de lo que irá al próximo commit.
- Repositorio: el historial commiteado almacenado en
.git.
Un ciclo completo
- Edita un archivo en tu editor.
- Ejecuta
git statuspara ver qué cambió. - Ejecuta
git diffpara inspeccionar los cambios. - Stagea con
git add. - Commit con
git commit.
echo "hello" >> notes.txt
git status
git diff
git add notes.txt
git diff --staged
git commit -m "Add greeting to notes"
Stageando selectivamente
Puedes stagear archivos individuales, patrones glob o incluso partes de un archivo usando el modo interactivo:
git add notes.txt readme.md
git add "src/*.py"
git add -p notes.txt # modo patch: sí/no por hunk
El modo patch es invaluable cuando tienes cambios mezclados que quieres dividir en commits separados.
Saltándose el index
El atajo git commit -a stagea y commitea todos los archivos rastreados en un solo paso. No añade archivos nuevos (no rastreados):
git commit -am "Quick fix"
Escribiendo buenos commits
Un mensaje de commit tiene una línea de asunto corta (50 caracteres más o menos) y un cuerpo opcional explicando el por qué. Ejecuta git commit sin -m para abrir tu editor:
git commit
# se abre el editor
# Línea de asunto
#
# Explicación más larga...
Commits atómicos
Un buen commit captura un cambio lógico. Constrúyelo deliberadamente: stagea exactamente los hunks que pertenecen juntos con git add -p, luego commitea. Si te encuentras describiendo un commit con "y" en el asunto ("Arregla login y refactoriza logger"), probablemente debería ser dos commits.
git add -p src/auth.py # stagea solo el arreglo de login
git commit -m "Fix login redirect on expired session"
git add -p src/logger.py
git commit -m "Refactor logger to use structured fields"
Los commits atómicos hacen que git bisect, git revert y la revisión de código sean dramáticamente más fáciles después.
Errores comunes
Olvidar hacer git add de archivos nuevos y sorprenderte con un commit "vacío". git status siempre te dice la verdad; léelo antes de commitear. Otra trampa: usar git commit -am cuando tienes nuevos archivos sin rastrear, lo que silenciosamente los deja fuera. Finalmente, commitear archivos generados (salida de build, node_modules, configuración del IDE) ensucia el historial y ralentiza los clones; añádelos a .gitignore antes de stagear. Cuando dudes, ejecuta git diff --staged para ver exactamente qué contendrá tu próximo commit.