Git para no perder nunca tu trabajo

Con Git, ningún experimento se pierde y cualquier error tiene vuelta atrás.

Duración: ~30 minutosAntes, conviene haber hecho: «Tu puesto de trabajo de IA, desde cero»

Qué vas a aprender

  • Configurar tu identidad en git y dominar el flujo diario: add, commit y push
  • Crear y fusionar ramas para experimentar sin romper main
  • Escribir un .gitignore que excluya checkpoints de modelos y archivos binarios grandes
  • Recorrer el historial con git log para entender cómo ha evolucionado un proyecto

Por qué importa

Vas a escribir cientos de archivos de código a lo largo de 34 módulos. Sin control de versiones perderás trabajo, romperás cosas que no podrás deshacer y no tendrás forma de colaborar con nadie.

Git es la herramienta. GitHub es donde vive el código. Esta lección cubre lo que necesitas para el curso, y nada más.

La idea clave

sequenceDiagram
    participant WD as Directorio de trabajo
    participant SA as Área de preparación
    participant LR as Repositorio local
    participant R as Remoto (GitHub)
    WD->>SA: git add
    SA->>LR: git commit
    LR->>R: git push
    R->>LR: git fetch
    LR->>WD: git pull

Tus archivos pasan por tres sitios antes de llegar a GitHub:

  • Directorio de trabajo: los archivos tal y como los ves en tu editor.
  • Área de preparación (staging area): lo que has marcado con git add para el próximo commit.
  • Repositorio local: el historial de commits guardado en la carpeta .git.

Tres cosas que debes recordar: 1. Guarda a menudo (git commit) 2. Sube al remoto (git push) 3. Crea una rama para cada experimento (git checkout -b experimento)

Paso a paso

Paso 1: configura git

git config --global user.name "Tu Nombre"
git config --global user.email "tu@ejemplo.com"

Usa el mismo email que en tu cuenta de GitHub: así tus commits aparecerán vinculados a tu perfil (y contarán en tu historial de actividad, algo que miran los reclutadores).

Paso 2: el flujo diario

git status
git add file.py
git commit -m "Añade la implementación del perceptrón"
git push origin main

Buenos mensajes de commit. Escríbelos en imperativo y explica qué cambia: «Añade validación del dataset», no «cambios» ni «arreglos varios». Dentro de seis meses, tú serás quien los lea.

Paso 3: ramas para experimentar

git checkout -b experiment/new-optimizer

# ... haz cambios, haz commits ...

git checkout main
git merge experiment/new-optimizer

En IA se experimenta mucho: un optimizador distinto, otro tamaño de lote, una arquitectura nueva. Cada experimento en su rama significa que main siempre funciona.

Paso 4: tu repositorio del curso

Guarda todo lo que hagas en el curso (scripts, notebooks, proyectos) en un repositorio propio. Así tendrás copia de seguridad, historial de cambios y, al final, un portfolio que enseñar.

  1. En GitHub, pulsa New repository, llámalo por ejemplo mi-curso-ia y créalo vacío (sin README).
  2. En tu ordenador:
mkdir mi-curso-ia && cd mi-curso-ia
git init -b main
echo "# Mi curso de ingeniería de IA" > README.md
git add README.md
git commit -m "Primer commit"

git remote add origin https://github.com/TU-USUARIO/mi-curso-ia.git
git push -u origin main

git checkout -b experimentos
# prueba cosas aquí sin miedo a romper main
git push origin experimentos

A partir de ahora, cada vez que descargues un archivo de una lección o escribas tu propio código, guárdalo en esta carpeta y haz commit.

Extra: deshacer los errores más comunes

Todo el mundo se equivoca con git. Estos son los rescates que más vas a usar:

Situación Comando
Quiero descartar los cambios de un archivo que aún no he añadido git restore archivo.py
He hecho git add de algo que no quería git restore --staged archivo.py
Me he equivocado en el mensaje del último commit (y no lo he subido) git commit --amend -m "Mensaje correcto"
Quiero deshacer un commit que ya está en GitHub git revert <hash> (crea un commit que lo anula)
¿Qué ha cambiado exactamente? git diff (sin preparar) y git diff --staged (preparado)

Regla de oro: nunca reescribas (--amend, rebase, push --force) commits que ya has compartido con otras personas. Para eso está git revert.

En la práctica

Para este curso necesitas exactamente estos comandos:

Comando Cuándo
git clone Descargar un proyecto (tuyo o de otra persona)
git add + git commit Guardar tu trabajo
git push Hacer copia de seguridad en GitHub
git checkout -b Probar algo sin romper main
git log --oneline Ver lo que has hecho

Y ya está. Para este curso no necesitas rebase, cherry-pick ni submódulos.

Un .gitignore para proyectos de IA

Los checkpoints de modelos pesan gigas: no los subas nunca a git. Empieza con esto:

# Entornos y secretos
.venv/
.env

# Checkpoints y pesos de modelos
*.pt
*.pth
*.safetensors
*.ckpt

# Datos y resultados
data/
outputs/
wandb/

# Python
__pycache__/
.ipynb_checkpoints/

Retos para tu ordenador

  1. Crea tu repositorio mi-curso-ia, haz una rama llamada mi-progreso, añade un archivo, haz commit y súbelo a GitHub
  2. Crea un .gitignore que excluya los checkpoints de modelos (.pt, .pth, .safetensors)
  3. Haz tres commits más y revisa el historial con git log --oneline; después deshaz el último con git revert

Glosario de la lección

Término Como se suele decir Qué es exactamente
Commit «Guardar» Una instantánea de todo tu proyecto en un momento concreto
Branch (rama) «Una copia» Un puntero a un commit que avanza a medida que trabajas
Merge (fusión) «Juntar código» Tomar los cambios de una rama y aplicarlos sobre otra
Remote (remoto) «La nube» Una copia de tu repositorio alojada en otro sitio (GitHub, GitLab)
Fork «Copiar un repo» Tu copia personal de un repositorio ajeno, en tu cuenta de GitHub

🧪 Practica esta lección

En el curso, esta lección incluye ejercicios interactivos con corrección automática y ejemplos de Python que ejecutas en tu navegador, sin instalar nada. Es gratis.

Practicar gratis en el curso →