Contribuir en proyectos git
Guía práctica paso a paso para colaborar en repositorios de equipo con flujo Git Flow simplificado basado en Historias de Usuario (UH / Issues).
1. Configuración inicial de Git #
Añade tu nombre y correo electrónico a la configuración global de Git y establece el editor por defecto (por ejemplo, Visual Studio Code):
1git config --global user.name "Tu Nombre" 2git config --global user.email "tu_email@ejemplo.com" 3git config --global core.editor "code --wait" 4git config --global push.autoSetupRemote true 5 6git config --list
2. Clonar el repositorio del proyecto #
Como colaborador directo con permisos en la organización, clonas directamente sin fork previo:
1git clone https://github.com/kant003/mini_apps.git 2cd mini_apps
Inspecciona todas las ramas remotas disponibles:
1git fetch --all --prune 2git branch -a 3git remote -v
3. Política de ramas del equipo #
Seguimos una política clara y predecible:
main(omasteren repositorios heredados): rama de producción siempre estable y testeada con las releases oficiales.develop: rama de integración del sprint donde conviven las features aprobadas.feature/UH-<número>-<nombre>: rama temporal aislada por cada Historia de Usuario o tarea técnica del sprint.
4. Descargar y seguir las ramas principales #
Antes de iniciar cualquier desarrollo, asegúrate de tener las ramas base al día:
1git switch main 2git pull origin main 3 4# Crear y rastrear develop localmente si aún no existía: 5git switch -c develop --track origin/develop 6 7# O si develop ya existe localmente: 8git switch develop && git pull origin develop
5. Desarrollar una funcionalidad (Historia de Usuario) #
- En el tablero (GitHub Projects / Jira), asigna la issue correspondiente a tu usuario y muévela a la columna In Progress (o DOING).
- Crea tu rama de trabajo directamente a partir del último
develop:
1git switch develop 2git pull --ff-only origin develop 3git switch -c feature/UH-12-formulario-login
- Trabaja aplicando commits pequeños y atómicos:
- Un cambio lógico = un commit.
- Usa Conventional Commits (
feat:,fix:,refactor:, etc.). - Incluye referencias como
Closes #12para que la issue se cierre automáticamente al fusionar la PR.
1git add . 2git commit -m "feat(auth): agrega formulario de login (Closes #12)"
6. Sincronizar con develop antes de publicar #
Para evitar conflictos acumulados, actualiza tu feature con los últimos cambios que otros compañeros hayan incorporado a develop:
1git fetch origin 2git rebase origin/develop 3 4# Si surgen conflictos, edita los archivos marcados, guárdalos y ejecuta: 5git add ruta/archivo-resuelto.ts 6git rebase --continue 7 8# Sube la rama actualizada de forma segura: 9git push --force-with-lease
7. Publicar tu rama de funcionalidad #
1git push -u origin feature/UH-12-formulario-login
8. Abrir y revisar la Pull Request (PR) #
- En GitHub/GitLab, abre una New Pull Request:
- Base:
develop - Compare:
feature/UH-12-formulario-login
- Base:
- Describe los cambios y cómo pueden probarse.
- Solicita la revisión a un compañero de equipo.
9. Aprobación y Estrategia de Merge #
Cuando el revisor aprueba la PR y los tests automáticos pasan:
- Se realiza la fusión mediante Squash and merge (recomendado en desarrollo ágil para condensar la feature en un commit limpio).
- La issue asociada se cerrará automáticamente si se usó la palabra clave
Closes #XX.
10. Limpieza tras la integración #
Actualiza tu rama develop local y elimina la rama de la tarea ya integrada:
1git switch develop 2git pull origin develop 3 4# Eliminar rama local y remota: 5git branch -d feature/UH-12-formulario-login 6git push origin --delete feature/UH-12-formulario-login
11. Integración de develop en main para Release #
Al finalizar el sprint, el responsable de release integra develop en main:
1git switch main 2git pull --ff-only origin main 3git merge --no-ff develop -m "chore(release): v1.2.0" 4git push origin main 5 6# Etiquetar con versión semántica: 7git tag -a v1.2.0 -m "release: v1.2.0" 8git push origin v1.2.0
Resumen del tema
Conceptos clave #
- Flujo Práctico de Contribución por Tareas (UH):
- Asignar issue/UH en el tablero y mover a In Progress.
- Crear rama desde
developactualizada:git switch -c feature/UH-XX-nombre develop. - Commits atómicos con Conventional Commits referenciando el cierre de la tarea (
Closes #XX). - Sincronización continua:
git fetchgit rebase origin/developgit push --force-with-lease. - Apertura de Pull Request hacia
developy resolución por Squash & merge. - Limpieza: borrado de rama local/remota y actualización de
develop.
- Cierre de Sprint y Lanzamiento:
- Fusión de
developenmain(git merge --no-ff). - Etiquetado formal con versión semántica:
git tag -a vX.Y.Z -m "release: ..."ygit push origin vX.Y.Z.
- Fusión de
Qué debes recordar #
Trabaja siempre sobre ramas de feature vinculadas a issues, mantén tu código al día con rebase sobre develop y cierra el ciclo integrando mediante Squash & Merge.