Apéndice D: Control de Versiones con Git
Imagina que cada vez que tu almacén queda en un buen estado, sacas una foto. Si mañana rompes algo, vuelves a la última foto y listo. Eso es Git: un sistema que guarda fotos (las llaman commits) de tu proyecto y te deja regresar a cualquiera.
Este apéndice cubre lo mínimo para no perder tu trabajo. Git tiene mucho más (ramas, colaboración, repositorios remotos como GitHub), pero eso es terreno para después. Aquí, lo esencial.
Instalar y arrancar
Comprueba si ya lo tienes:
git --version
Si no aparece, descárgalo de git-scm.com. Luego, una sola vez, dile quién eres (tu nombre queda en cada foto):
git config --global user.name "Tu Nombre"
git config --global user.email "tu@correo.com"
El ciclo de trabajo
Dentro de la carpeta de tu proyecto, lo conviertes en repositorio una sola vez:
git init
A partir de ahí el ciclo es siempre el mismo: trabajas, revisas y guardas una foto.
# 1. ¿Qué cambió desde la última foto?
git status
# 2. Marcar los archivos que quieres incluir en la foto
git add inventario.py
# 3. Tomar la foto, con una nota de qué hiciste
git commit -m "Agregar función de búsqueda"
La nota del -m es para tu yo del futuro. Que diga qué cambiaste, no “cambios varios”.
Ver el historial y volver atrás
Para ver todas las fotos tomadas:
git log --oneline
Verás una lista con un código corto por cada commit. ¿Rompiste un archivo y quieres dejarlo como estaba en la última foto?
git restore inventario.py
Eso descarta los cambios no guardados de ese archivo y lo regresa al estado del último commit. Es la red de seguridad que hace que experimentar deje de dar miedo: si sale mal, vuelves a la última foto buena.
¿Y antes de tomar la foto, quieres ver exactamente QUÉ cambió, línea por línea? Ese es git diff:
git diff
Las líneas con - son lo que quitaste; las de +, lo que agregaste. Hazlo costumbre antes de cada commit: leer tu propio diff atrapa errores que el ojo no ve en el editor.
Lo que NO va en la foto (.gitignore)
Tu proyecto del SGI tiene dos cosas que Git no debería fotografiar jamás: la habitación .venv/ (pesa muchísimo y se reconstruye con un comando) y el inventario.json (son tus DATOS de prueba, no tu código; cambian a cada rato y ensucian cada foto).
Para eso existe un archivo especial llamado .gitignore, en la raíz del proyecto. Cada línea es un patrón que Git ignorará:
# Entorno virtual: se reconstruye, no se versiona
.venv/
# Datos generados por el programa
inventario.json
# Basura del sistema
__pycache__/
.DS_Store
Créalo ANTES del primer commit y git status dejará de gritarte con archivos que nunca pensabas guardar. La regla general: el código se versiona; lo que el código genera o descarga, no.
Por qué te conviene desde ya
No necesitas Git para aprender Python. Pero el día que un cambio rompa algo que funcionaba (y ese día llega), Git es la diferencia entre “vuelvo a la foto de ayer” y “reescribo de memoria lo que tenía”. Empieza con estos comandos. El resto se aprende cuando lo necesites.