06 · Git y forma de trabajar
Git no es solo una herramienta de versionado.
Es una forma de comunicarnos con otras personas
y con nuestro yo del futuro.
Este capítulo define convenciones simples de Git pensadas para equipos de Data Science pequeños, donde la claridad y la velocidad importan más que la ceremonia.
El problema que queremos evitar
Sin acuerdos claros, Git suele volverse:
- commits difíciles de entender
- ramas que viven demasiado tiempo
- PRs grandes que nadie quiere revisar
- secretos que llegan al repo por accidente
Nada de esto es falta de profesionalismo. Es falta de estructura mínima compartida.
🔒 Convenciones de commits (normativo)
Cada commit debería representar una intención clara.
El mensaje importa porque:
- ayuda a entender qué pasó
- facilita debugging y reverts
- construye una historia útil del proyecto
Formato recomendado
<tipo>: <mensaje corto y claro>
Tipos más comunes en proyectos de Data Science:
feat– nueva funcionalidadfix– corrección de bugsdocs– cambios de documentaciónrefactor– cambios internos sin cambiar comportamientochore– tareas de mantenimiento
Ejemplos · Mensajes de commit (bueno vs malo)
❌ Malos mensajes
updatefix stuffchangeswip
No dicen qué cambió ni por qué.
✅ Buenos mensajes
feat: add prompt router for multi-model fallbackfix: prevent leaking PII in request logsdocs: explain uv workflow for new contributorsrefactor: extract feature engineering pipeline
Son específicos, accionables y fáciles de entender.
🔒 Ramas (branches)
Usamos un enfoque trunk-based light.
La idea es simple:
mainsiempre está en estado deployable- las ramas son cortas
- se eliminan después del merge
Naming de ramas
Formato recomendado:
<tipo>/<descripcion-corta>
Ejemplos:
feat/prompt-cachefix/gcp-auth-timeoutdocs/onboarding
Este naming ayuda a:
- entender el propósito de la rama
- navegar el repo
- mantener consistencia en el equipo
🔒 Pull Requests (PRs) en equipos pequeños
En equipos de hasta 3 personas, los PRs deben ser rápidos de entender y revisar.
Un buen PR:
- hace una cosa
- tiene un tamaño razonable
- se puede revisar en minutos, no horas
Qué debe explicar un PR
Un PR debería responder claramente:
- Qué cambió
- Por qué cambió
- Cómo probarlo (si aplica)
Tip
Usamos un template estándar para los PRs, que está en ../docs-templates/pull_request_template.md.
Ejemplo · PR claro vs PR confuso
❌ PR confuso
“Varios cambios y mejoras”
- cambios mezclados
- sin contexto
- difícil de revisar
✅ PR claro
“Add prompt cache to reduce latency on repeated queries”
Incluye: - breve contexto del problema - qué se hizo - impacto esperado - notas para el reviewer
Tamaño del PR
No hay un número mágico, pero una buena regla empírica es:
Si el PR no se puede explicar en pocas frases,
probablemente se puede dividir.
PRs pequeños:
- reciben mejor feedback
- se mergean más rápido
- generan menos conflictos
🔒 .gitignore como barrera de seguridad
Hay archivos que nunca deberían llegar al repositorio.
Entre ellos:
.env- credenciales
- data local
- outputs temporales
- checkpoints
Estos archivos:
- viven fuera de Git
- se gestionan localmente o por infraestructura
Si alguno de ellos aparece en un diff, el PR no se mergea.
Esto no es burocracia. Es protección del equipo y del proyecto.
Ejemplo · Señales de alerta en un PR
- aparece un archivo
.env - se ve una API key en texto plano
- se sube data local “solo para probar”
Cualquiera de estas señales bloquea el merge hasta corregirlo.
🌱 Avanzado · Merge vs Rebase
No es obligatorio dominar esto desde el día uno, pero es importante entender la diferencia.
Merge
- conserva toda la historia
- más explícito
- menos riesgoso
Es la opción recomendada por defecto.
Rebase
- produce una historia más lineal
- reescribe commits
- requiere cuidado
Regla simple:
Nunca rebasear una rama que otras personas usan.
El rebase es útil:
- en ramas personales
- antes de abrir un PR
- para limpiar commits locales
Antipatrones (señales de alerta)
- commits genéricos
- ramas que duran semanas
- PRs gigantes
- force-push sin contexto
- secretos en el repo (aunque sea por accidente)
Estos patrones suelen indicar que el proceso necesita ajuste.
Relación con el resto del playbook
05 · Estándares de códigodefine qué esperamos del código06 · Gitdefine cómo colaboramos sobre él07 · Calidad y CIautomatiza estos acuerdos
Git es el punto donde todas las prácticas se encuentran.
Cierre
Git no debería ser una fuente de fricción. Debería ser una herramienta que facilite el trabajo en equipo.
Con reglas simples y compartidas:
- los cambios se entienden mejor
- los errores se detectan antes
- el equipo avanza con menos desgaste