Trabajar con Git y GitLab en el DTI
Guía accesible al flujo de trabajo del DTI con Git y GitLab UNACH: qué son las ramas, cómo trabajar desde VSCode, cómo abrir un Merge Request y qué hace el CI/CD después del merge.
Esta guía está pensada para quienes recién llegan al DTI y van a colaborar en alguno de nuestros proyectos. No asume conocimiento previo de Git. Si nunca has tocado un repositorio, este es el lugar para empezar.
1. ¿Qué es Git?
Imagínate un documento de Word donde colaboran cinco personas a la vez. Cada una escribe, borra, pega y guarda al mismo archivo. ¿Qué pasa? Que el archivo se rompe y nadie recuerda qué versión era la buena.
Git es la herramienta que evita ese caos en código. Sirve para:
- Guardar el historial de todos los cambios que se hacen sobre un proyecto.
- Permitir que varias personas trabajen al mismo tiempo sin pisarse.
- Volver a una versión anterior si algo sale mal.
Si Git es la libreta donde se anota cada cambio, GitLab es la oficina donde se guarda esa libreta y donde el equipo coordina su trabajo. El DTI tiene su propia oficina interna en gitlab.unach.cl.
2. ¿Qué es una rama?
Una rama (en inglés branch) es una copia temporal del proyecto sobre la que trabajas sin afectar al resto del equipo.
Una analogía simple: imagínate que el proyecto es un árbol. La rama principal es el tronco. Cuando tú quieres agregar algo nuevo, no escribes directo sobre el tronco; sales por una rama lateral, haces tu trabajo ahí, y cuando está listo y revisado, lo “pegas” de vuelta al tronco.
Esto tiene dos beneficios enormes:
- No rompes lo que el resto está usando. Mientras tú trabajas en tu rama, los demás siguen viendo el tronco intacto.
- Tu trabajo se puede revisar antes de juntarse con el tronco. Es la base del review por mentor DTI que verás más abajo.
3. Las tres ramas del DTI
En el DTI usamos exactamente tres tipos de rama, no más:
| Rama | Qué es | Quién puede tocarla |
|---|---|---|
main | La versión que está en producción, viva. | Sólo el mentor DTI mediante merge desde staging. |
staging | La versión candidata, lista para validar. | Sólo el mentor DTI mediante merge desde feature. |
feature/* | Tu rama de trabajo personal para una tarea. | Tú la creas, tú la trabajas, tú la pushas. |
Regla de oro del DTI: cuando vayas a empezar una tarea nueva, saca tu rama
feature/*desdestaging, no desdemain. Esto evita que tu trabajo parta sobre código no validado.
Ejemplos de nombres válidos de feature branches:
feature/login-form— añadir formulario de login.feature/phone-field— añadir campo teléfono al perfil.feature/rut-validation— validar formato de RUT chileno.
4. Git en VSCode
En el DTI no necesitas usar terminal para el día a día. Todo se hace con el panel Source Control integrado en VSCode (el icono que parece una bifurcación en la barra lateral izquierda).
Pasos básicos:
- Instala VSCode. Descárgalo desde code.visualstudio.com (gratis).
- Clonar el proyecto desde gitlab.unach.cl. En VSCode:
Ctrl+Shift+P→ escribe “Git: Clone” → pega la URL del proyecto (tu mentor DTI te la pasa). - Cambiar a la rama
staging. Abajo a la izquierda de VSCode aparece el nombre de la rama actual. Haz clic → eligestaging. - Crear tu feature branch. Mismo dropdown → “Create new branch from…” → elige
staging→ escribefeature/nombre-corto. - Trabajar y hacer commit. Cuando termines un cambio pequeño y completo: abre el panel Source Control → escribe un mensaje (ej.
feat: agregar campo teléfono) → presionaCtrl+Entero el botón ✓ Commit. - Subir tu rama a GitLab. En el panel: botón
Sync Changes(oPublish Branchla primera vez). Esto envía tu rama agitlab.unach.cl.
Mensajes de commit: usa el prefijo según el tipo de cambio:
feat:(nueva funcionalidad),fix:(corrección de bug),docs:(documentación),chore:(mantención),refactor:(reorganización sin cambio de comportamiento).
5. GitLab UNACH paso a paso
Una vez que pushaste tu rama, hay que crear una Merge Request (MR) en GitLab para pedir que se integre.
- Entra a
gitlab.unach.cly busca el proyecto correspondiente (Sigae, Sacint, Carga Horaria, etc.). - En el menú lateral izquierdo, ve a Merge requests.
- Haz clic en + New merge request.
- Source branch: tu
feature/.... Target branch:staging(nomain). - Escribe un título claro (usando el mismo prefijo del commit) y una breve descripción explicando qué hiciste y cómo probarlo.
- Reviewer: asigna a tu mentor DTI.
- Haz clic en Create merge request.
A partir de aquí tu trabajo queda esperando review. Verás un panel con el estado del pipeline (el CI/CD; lo explicamos en la sección 7).
6. El rol del mentor DTI
El mentor DTI es la persona que revisa y aprueba los cambios antes de que entren a staging o a main. Tiene dos responsabilidades clave:
- Revisar tu MR a
staging. Lee tu código, comenta lo que falte, te pide ajustes si los hay. Cuando todo está OK, hace el merge astaging. - Probar en el ambiente staging y luego mergear a
main. Después del merge astaging, el CI/CD despliega automáticamente a un ambiente intermedio. El mentor lo prueba y te pide que tú también lo pruebes (porque tú conoces tu cambio mejor que nadie). Si ambos confirman que funciona, el mentor abre un MR destaging→mainy lo aprueba. Ese segundo merge es el que va a producción.
Lo importante de este flujo: siempre hay un humano (el mentor DTI) revisando antes de que algo llegue a producción. No hay merges automáticos a
mainsin revisión.
7. CI/CD: qué pasa después del merge
Cuando el mentor DTI aprueba un merge —ya sea a staging o a main— GitLab dispara automáticamente un pipeline CI/CD. Es un robot que hace tres cosas seguidas, sin que nadie tenga que apretar botones:
- Build & test: compila el proyecto y corre las pruebas.
- Image: construye una imagen Docker (un paquete autocontenido con el sistema listo para instalarse en un servidor).
- Deploy: actualiza el ambiente correspondiente con la nueva imagen.
- Merge a
staging→ despliega al ambiente staging (interno, para validación). - Merge a
main→ despliega a producción (lo que usan las personas de la universidad).
- Merge a
Las ramas feature/* también disparan algunos jobs de validación (linter, tests, build de prueba), pero no despliegan a ningún ambiente. Eso te da feedback rápido en tu MR antes de que el mentor lo revise.
Lo mínimo que tienes que recordar
- Saca tu rama
feature/*desdestaging(nunca desdemain). - Trabaja en VSCode. Commit con prefijo (
feat:,fix:, etc.). Push con el botón Sync. - Abre MR en
gitlab.unach.clcon targetstagingy asigna a tu mentor DTI. - Espera review. Si te piden cambios, los haces, commit, push y se actualizan solos en el MR.
- Cuando el mentor merge a
staging, valida en el ambiente staging. - El mentor abre el MR de
staging→mainy, con tu OK, lo merge. Listo, está en producción.
Anexo: equivalente en terminal
Si prefieres terminal, esta es la traducción mínima de los pasos:
| Acción | VSCode | Terminal |
|---|---|---|
| Clonar repositorio | Cmd Palette → “Git: Clone” | git clone https://gitlab.unach.cl/dti/sigae.git |
| Cambiar a staging | Dropdown rama → staging | git checkout staging && git pull |
| Crear feature branch | Dropdown rama → “Create branch from…” | git checkout -b feature/mi-tarea staging |
| Commit | Source Control → mensaje → Ctrl+Enter | git add -A && git commit -m "feat: mi cambio" |
| Push | Source Control → Sync Changes | git push -u origin feature/mi-tarea |
| Pull cambios remotos | Source Control → Sync Changes | git pull |
Versión presentación
Esta versión condensada está pensada para proyectarse en sala (kick-off de proyectos, inducción de practicantes). Usa las flechas o los controles para navegar; haz clic en Abrir presentación para verla a pantalla completa.
¿Te quedaron dudas? Habla con tu mentor DTI, escríbele en el canal del proyecto en GitLab, o asiste a la próxima sesión de inducción.