Sistemas de control de versiones
Este artículo es una explicación de conceptos sobre sistemas de control de versiones, incluidas preguntas de evaluación, componentes clave y etiquetas.
Esencialmente
Un sistema de control de versiones registra cada cambio de forma trazable, permite trabajar en paralelo usando ramas y garantiza trazabilidad, recuperabilidad y colaboración.
Descripción técnica compacta
- DVCS (Git): historial completo disponible localmente
- Centralizado (Subversion): historial principalmente en el servidor
Operaciones esenciales:
- Commit (cambio atómico)
- Branch (desarrollo paralelo)
- Merge o Rebase (integración)
- Tag (marcar versión)
Gobernanza de equipo:
- Pull Requests + Reviews
- Protección de ramas + verificaciones de estado (CI)
- commits firmados
Trazabilidad: referencias de tickets en commits/PRs + releases mediante tags/notas.
Puntos clave para examen
- Explicar Git vs. SVN
- El commit contiene metadatos + hash
- Merge vs Rebase (historial)
- Resolución de conflictos (3-Way Merge + tests)
- PRs/Reviews para calidad/cumplimiento
- Releases: tags + semver
- Seguridad: permisos, firmas, auditoría
Componentes clave
- Repository (local/remoto)
- Working Tree + Staging Area
- Commits
- Branches
- Merge
- Rebase
- Tags
- Control de acceso
- Hooks/automatización
- Integración CI/CD
Ejemplo práctico (flujo de trabajo)
1) crear feature-branch
2) hacer commits (pequeños, trazables)
3) rebase sobre main, resolver conflictos
4) Pull Request + Review + CI verde
5) Merge
6) Release tag (ej. v1.4.0) + Release Notes
Ventajas e inconvenientes
Ventajas
- Trazabilidad y recuperación
- desarrollo paralelo
- calidad mediante reviews + CI
Inconvenientes
- curva de aprendizaje (conflictos/rebase)
- esfuerzo de gobernanza (políticas)
Preguntas típicas de examen (con respuesta breve)
- ¿Merge vs Rebase? Merge preserva el historial ramificado, Rebase reescribe la rama de forma lineal.
- ¿Para qué sirven los tags? Para marcar releases de forma reproducible.
- ¿Por qué Pull Requests? Principio de cuatro ojos + verificaciones.
- ¿Cómo vincular código con requisitos? ID de ticket en commits/PRs + Release Notes.



