Configuración y Flujo de Trabajo con Forks, Ramas y Pull Requests en Git
Este documento detalla paso a paso la configuración y el flujo de trabajo utilizando forks, ramas y Pull Requests en Git, haciendo énfasis en la interacción entre tu repositorio forkeado (origin) y el repositorio original (upstream).
1. Configuración Inicial del Fork
1.1 Realizar el Fork del Repositorio
- Ingresa a la plataforma (GitHub, GitLab, etc.) y navega al repositorio original.
- Haz clic en Fork para crear tu copia personal en tu cuenta.
1.2 Clonar el Repositorio Forkeado a tu Máquina Local
git clone cd repositorio-fork
1.3 Configurar los Remotos: Origin y Upstream
- Origin: Es tu repositorio forkeado (ya configurado al clonar).
- Upstream: Es el repositorio original. Para poder traer cambios del proyecto base, agrega el remoto upstream:
git remote add upstream https://github.com/organizacion/repositorio-original.git
Verifica la configuración:
git remote -v
La salida deberá mostrar ambos remotos con sus URL correspondientes.
2. Flujo de Trabajo con Forks, Ramas y Pull Requests
El proceso se centra en la creación y actualización de ramas, trabajando localmente y actualizando el repositorio origin, mientras que el repositorio upstream se mantiene actualizado exclusivamente mediante Pull Requests.
2.1 Creación de la Rama de Funcionalidad en Local y en Upstream
- Crear la rama en local:
- Sigue la convención para nombres de rama.
git checkout -b feat_86b44h2uw_new_payment_gateway
- Crear la rama en Upstream:
- Para que la rama de funcionalidad exista en upstream y origin, deberás crearla o gestionarla con el equipo.
git push origin feat_86b44h2uw_new_payment_gateway
git push upstream feat_86b44h2uw_new_payment_gateway
2.2 Desarrollo y Commit
Trabaja en tu código y, una vez realizado un cambio significativo, registra el commit siguiendo la convención:
git add .
git commit -m "fix: 86b44h2uw - correct typo in payment module"
2.3 Envío del Código a Origin
Después de realizar commits, actualiza la rama en tu repositorio origin:
git push origin feat_86b44h2uw_new_payment_gateway
Nota: La rama en upstream se actualizará mediante el Pull Request, por lo tanto no se realizan push directos a upstream desde el desarrollo diario.
2.4 Creación del Pull Request (PR)
- Ingresa a la plataforma de tu repositorio y crea un PR desde la rama
feat_86b44h2uw_new_payment_gatewayen origin hacia la misma rama en upstream. - Utiliza un título siguiendo la convención.
- Ejemplo:
docs: 86b44h2uw - update readme with installation instructions
- Ejemplo:
- En la descripción, detalla los objetivos del PR, los cambios realizados y cualquier información adicional relevante.
3. Creación de una Rama Local a Partir de una Rama Existente en Upstream
Cuando ya existe una rama en upstream que deseas trabajar, sigue estos pasos:
3.1 Actualizar la Información Remota
Obtén las últimas actualizaciones de upstream:
git fetch upstream
3.2 Crear y Cambiar a la Rama Local Basada en Upstream
Utiliza git switch para cambiar a la rama que existe en upstream. Si la rama no está creada localmente, git switch la creará automáticamente configurándola para seguir la rama remota:
git switch feat_86b44h2uw_new_payment_gateway
Explicación:
Gracias a la detección inteligente,git switchverifica si existe una rama remota con ese nombre en upstream y, de no existir localmente, la configura y crea para facilitar el seguimiento y la sincronización.
4. Actualización Directa de Ramas en Upstream a partir de Otras Ramas
Cuando tienes dos ramas en upstream y en una de ellas necesitas incorporar los cambios de la otra, puedes hacerlo directamente desde tu entorno local sin involucrar a origin. Esto evita que en el siguiente PR se incluyan cambios no deseados.
4.1 Cambiar a la Rama que Necesita Actualización
Por ejemplo, si la rama feat_branch_A debe recibir cambios de feat_branch_B:
git switch feat_branch_A
4.2 Integrar los Cambios desde la Otra Rama
Realiza un pull desde feat_branch_B del repositorio upstream:
git pull upstream feat_branch_B
4.3 Pujar Directamente la Actualización a Upstream
Una vez verificados los cambios, envía la actualización directamente a upstream:
git push upstream feat_branch_A
Consejo:
Este flujo previene que el siguiente Pull Request incluya los cambios que se tomaron de otra rama, manteniendo cada PR enfocado únicamente en la funcionalidad o corrección correspondiente.
5. Buenas Prácticas y Recomendaciones
- Aislamiento de Cambios:
- Trabaja siempre en ramas dedicadas para cada funcionalidad o corrección en lugar de modificar ramas principales.
- Mensajes Claros en Commits y PRs:
- Utiliza convenciones consistentes para los nombres de ramas, mensajes de commit y títulos de Pull Requests. Esto facilita la trazabilidad y la revisión colaborativa.
- Revisión y Testing:
- Antes de generar un PR, asegúrate de que el código funcione correctamente en tu entorno local y cumpla con los estándares de calidad del proyecto.
- Sincronización Regular:
- Si necesitas trabajar a partir de ramas ya existentes en upstream, usa
git fetch upstreamygit switchpara mantener tu entorno actualizado. - Además, cuando deba fusionarse el contenido de una rama en otra en upstream, realiza el proceso directamente en dicha rama para evitar confusiones en futuros PRs.
- Si necesitas trabajar a partir de ramas ya existentes en upstream, usa
- Documentación Completa:
- Registra cualquier configuración o flujo específico que se utilice en el repositorio para que todo el equipo esté alineado en el proceso de desarrollo.