Flujo de Trabajo Paso a Paso
Cada vez que tomes una tarea, sigue este ciclo:
1. Actualizar tu entorno local
Sección titulada «1. Actualizar tu entorno local»git checkout devgit pull origin dev2. Crear tu rama de trabajo
Sección titulada «2. Crear tu rama de trabajo»git checkout -b feature/mi-nueva-tarea3. Desarrollar y hacer commits
Sección titulada «3. Desarrollar y hacer commits»Commits atómicos y descriptivos. Un commit = un cambio lógico.
git add .git commit -m "feat: añade validación al formulario de login"4. Sincronizar con el trabajo de otros
Sección titulada «4. Sincronizar con el trabajo de otros»Antes de subir, asegúrate de no tener conflictos:
git pull origin dev5. Subir tu rama al remoto
Sección titulada «5. Subir tu rama al remoto»git push origin feature/mi-nueva-tarea6. Crear un Pull Request
Sección titulada «6. Crear un Pull Request»En GitHub, abre un PR de tu rama feature/... hacia dev.
Pro-tips
Sección titulada «Pro-tips»- Commits semánticos: Usa prefijos (
feat:,fix:,docs:,refactor:) para un historial limpio. - Conflictos: Son normales. Git solo dice “los dos tocasteis esto, decide tú”. Habla con el compañero y elige la solución correcta.
Problema común: mi rama de feature “apunta a dev”
Sección titulada «Problema común: mi rama de feature “apunta a dev”»Qué está pasando
Sección titulada «Qué está pasando»Algunas extensiones de Git en VS Code (como GitLens o la integración nativa de Source Control) pueden crear una rama nueva de forma que el upstream queda configurado como dev. Esto hace que, al hacer git push, Git intente empujar tus commits directamente a dev en lugar de a tu rama feature/....
Esto va en contra del flujo de trabajo porque nunca se debe hacer push directo a dev.
Cómo detectarlo
Sección titulada «Cómo detectarlo»Ejecuta:
git branch -vvSi ves algo como esto:
* feat/mi-rama 1234567 [dev] mensaje del último commitSignifica que tu rama local tiene configurado dev como upstream.
Cómo solucionarlo
Sección titulada «Cómo solucionarlo»Opción A: quitar el upstream incorrecto y empujar a tu propia rama
Sección titulada «Opción A: quitar el upstream incorrecto y empujar a tu propia rama»# Desvincular de devgit branch --unset-upstream
# Empujar a tu propia rama en el remotogit push origin feat/mi-ramaOpción B: cambiar el upstream a tu rama del remoto
Sección titulada «Opción B: cambiar el upstream a tu rama del remoto»git branch --set-upstream-to=origin/feat/mi-rama feat/mi-ramaOpción C: empujar explícitamente indicando origen y destino
Sección titulada «Opción C: empujar explícitamente indicando origen y destino»git push origin feat/mi-rama:feat/mi-ramaCómo evitarlo al crear ramas
Sección titulada «Cómo evitarlo al crear ramas»Cuando crees una nueva rama, hazlo explícitamente desde la terminal:
git checkout devgit pull origin devgit checkout -b feature/mi-nueva-tareaY luego empuja siempre con:
git push -u origin feature/mi-nueva-tareaLa opción -u (o --set-upstream) configura el upstream correcto a tu propia rama, no a dev.
Restringir push directo a dev en GitHub
Sección titulada «Restringir push directo a dev en GitHub»Para evitar que esto ocurra por error, configura un ruleset en GitHub. La interfaz actual usa Rulesets en lugar de la antigua “Branch protection rules”:
- Ve al repositorio en GitHub.
- Abre Settings → Rules → Rulesets.
- Haz clic en New branch ruleset.
- En Ruleset Name, escribe un nombre descriptivo, por ejemplo:
PR required to dev. - En Enforcement status, deja Active.
- En Bypass list, deja vacío salvo que quieras permitir a ciertos usuarios o roles saltarse las reglas (normalmente nadie).
- En Target branches, haz clic en Add target y configura:
- Include by pattern: escribe
dev. - También puedes añadir
mainsi quieres proteger ambas.
- Include by pattern: escribe
- En Rules, activa al menos:
- Restrict deletions
- Require pull request before merging
- Require approvals (al menos 1)
- Block force pushes
- Restrict who can push to matching branches
- Añade solo a los administradores o al equipo que deba poder hacer push directo en casos excepcionales.
- Guarda los cambios con Create.
Con este ruleset activo, incluso si alguien intenta hacer git push origin dev, GitHub rechazará la operación.
Comando para verificar tu configuración actual
Sección titulada «Comando para verificar tu configuración actual»git remote show originEsto muestra las ramas locales, sus upstreams y las ramas del remoto.