HDP115

Forks y Pull Requests

Aprende a utilizar forks y pull requests para contribuir a proyectos de código abierto y colaborar eficientemente en equipos de desarrollo, siguiendo las mejores prácticas de Git.

CE

Cristian Escalante

Última actualización: 26 de abril de 2025

git
control de versiones
desarrollo

Forks y Pull Requests

Los forks y pull requests son conceptos fundamentales para la colaboración en proyectos de software, especialmente en el ecosistema de código abierto. Estas herramientas permiten contribuir a proyectos de otros desarrolladores de manera organizada y segura, facilitando la revisión de código y la integración de cambios.

¿Qué es un Fork?

Un fork es una copia personal de un repositorio ajeno. Al hacer fork de un proyecto, creas una copia exacta del repositorio original en tu cuenta, sobre la cual tienes permisos completos de escritura. Esto te permite:

  1. Experimentar con cambios sin afectar el proyecto original
  2. Proponer mejoras o correcciones al proyecto original
  3. Utilizar el código de otros como punto de partida para tus propios proyectos
  4. Contribuir a proyectos de código abierto sin necesitar permisos de escritura en el repositorio original

Es importante entender que un fork es diferente de un clon. Un clon es simplemente una copia local de un repositorio, mientras que un fork es una copia remota asociada a tu cuenta en la plataforma de alojamiento (GitHub, GitLab, etc.).

Cómo hacer Fork de un repositorio

El proceso para hacer fork varía ligeramente según la plataforma:

En GitHub

  1. Navega al repositorio que quieres bifurcar
  2. Haz clic en el botón "Fork" en la esquina superior derecha
  3. Selecciona tu cuenta como destino del fork
  4. Espera a que se complete el proceso de copia

En GitLab

  1. Navega al proyecto que quieres bifurcar
  2. Haz clic en el botón "Fork" cerca de la parte superior derecha
  3. Selecciona tu espacio de nombres como destino
  4. Opcionalmente, puedes elegir qué ramas incluir

En Bitbucket

  1. Navega al repositorio que quieres bifurcar
  2. Haz clic en el botón "+" en el menú lateral izquierdo
  3. Selecciona "Fork this repository"
  4. Configura el nombre y otras opciones para tu fork

Trabajando con tu Fork

Una vez que has creado un fork, puedes clonarlo a tu máquina local para trabajar con él:

# Clonar tu fork a tu máquina local
git clone https://github.com/tu-usuario/repositorio-forkeado.git

# Entrar al directorio del repositorio
cd repositorio-forkeado

Mantener tu Fork actualizado

Tu fork no se actualiza automáticamente cuando hay cambios en el repositorio original. Para mantenerlo al día, debes configurar el repositorio original como un remoto adicional (comúnmente llamado "upstream"):

# Añadir el repositorio original como remoto
git remote add upstream https://github.com/usuario-original/repositorio-original.git

# Verificar los remotos configurados
git remote -v

Para actualizar tu fork con los cambios del repositorio original:

# Obtener los cambios del repositorio original
git fetch upstream

# Asegurarte de estar en tu rama main
git checkout main

# Fusionar los cambios del repositorio original en tu rama local
git merge upstream/main

# Enviar los cambios actualizados a tu fork en GitHub/GitLab/etc.
git push origin main

¿Qué es un Pull Request?

Un Pull Request (PR) en GitHub, o Merge Request (MR) en GitLab, es una propuesta para integrar cambios de una rama a otra, generalmente de tu fork a un repositorio original. Es una solicitud para que el propietario del repositorio original "tire" (pull) tus cambios hacia su proyecto.

Los Pull Requests proporcionan:

  1. Una interfaz para revisar los cambios propuestos
  2. Un espacio para discutir y refinar el código
  3. Integración con herramientas de CI/CD para verificar que los cambios no rompen nada
  4. Un registro histórico de contribuciones y decisiones

Anatomía de un Pull Request

Un Pull Request típico incluye:

  • Título: Descripción breve de los cambios
  • Descripción: Explicación detallada de lo que hace el PR y por qué
  • Commits: Los cambios específicos incluidos en el PR
  • Diff: Visualización de las diferencias de código
  • Revisiones: Comentarios y aprobaciones de otros desarrolladores
  • Checks: Resultados de pruebas automatizadas y linters
  • Conversación: Discusión sobre los cambios propuestos

Creando un Pull Request

Preparación

Antes de crear un Pull Request, es una buena práctica:

  1. Trabajar en una rama específica para tu cambio (no en main)
  2. Mantener tus cambios enfocados en una sola tarea o corrección
  3. Asegurarte de que tu código cumple con las guías de estilo del proyecto
  4. Probar tus cambios localmente
# Crear una rama para tu característica o corrección
git checkout -b feature/nueva-funcionalidad

# Hacer cambios, añadirlos y hacer commit
git add .
git commit -m "Implementa nueva funcionalidad"

# Enviar la rama a tu fork
git push origin feature/nueva-funcionalidad

Crear el Pull Request

En GitHub

  1. Navega a tu fork en GitHub
  2. Selecciona la rama que contiene tus cambios
  3. Haz clic en "Contribute" o "Compare & pull request"
  4. Completa el título y la descripción
  5. Revisa los cambios incluidos
  6. Haz clic en "Create pull request"

En GitLab

  1. Navega a tu fork en GitLab
  2. Ve a "Merge Requests" en el menú lateral
  3. Haz clic en "New merge request"
  4. Selecciona la rama fuente (tu rama) y la rama destino (rama del proyecto original)
  5. Completa el título y la descripción
  6. Haz clic en "Create merge request"

Ejemplo de una buena descripción de Pull Request

# Implementa autenticación con Google OAuth

## Cambios realizados
- Añade endpoint para manejar la redirección de OAuth
- Integra el SDK de Google para verificar tokens
- Actualiza la base de datos de usuarios para almacenar IDs de Google
- Añade documentación sobre el flujo de autenticación

## Cómo probar
1. Configura las variables de entorno según README.md
2. Inicia la aplicación con `npm start`
3. Intenta iniciar sesión con el botón "Login with Google"

## Capturas de pantalla
[Si es relevante, incluir capturas]

## Notas adicionales
Este PR resuelve el issue #123

El proceso de revisión de código

Una vez creado el Pull Request, comienza el proceso de revisión:

  1. Revisión automatizada: CI/CD ejecuta pruebas y análisis de código
  2. Revisión manual: Otros desarrolladores revisan tu código y hacen comentarios
  3. Iteración: Realizas cambios basados en los comentarios recibidos
  4. Aprobación: Los revisores aprueban los cambios cuando están satisfechos
  5. Merge: El mantenedor del proyecto integra tus cambios

Responder a comentarios

Para responder a comentarios en un Pull Request, generalmente necesitarás:

  1. Hacer nuevos cambios en tu rama local
  2. Hacer commit de esos cambios
  3. Enviarlos a tu fork
  4. Los nuevos commits aparecerán automáticamente en el PR
# Hacer cambios adicionales basados en comentarios
git add .
git commit -m "Ajusta implementación según comentarios de la revisión"
git push origin feature/nueva-funcionalidad

Buenas prácticas para Pull Requests

1. Mantén los PRs pequeños y enfocados

Un PR debería abordar una sola tarea o corrección. Los PRs grandes son difíciles de revisar y tienen más probabilidades de contener problemas.

2. Escribe descripciones claras y completas

Explica qué cambios estás proponiendo y por qué son necesarios. Incluye instrucciones para probar los cambios si es relevante.

3. Referencia issues relacionados

Si tu PR resuelve un problema específico, referencia el número de issue:

Fixes #123

4. Mantén un historial de commits limpio

Considera usar git rebase -i para organizar y limpiar tus commits antes de crear el PR:

git rebase -i HEAD~3  # Para los últimos 3 commits

5. Responde a los comentarios de manera oportuna

Mantén el impulso en el proceso de revisión respondiendo rápidamente a los comentarios y preguntas.

6. Sé receptivo a la retroalimentación

Recuerda que el objetivo es mejorar el código. Sé abierto a sugerencias y cambios en tu implementación.

Flujos de trabajo comunes con Forks y PRs

Contribución a proyectos de código abierto

  1. Fork el repositorio del proyecto
  2. Clona tu fork localmente
  3. Configura el upstream
  4. Crea una rama para tu contribución
  5. Realiza cambios y commits
  6. Envía la rama a tu fork
  7. Crea un Pull Request
  8. Responde a la retroalimentación y realiza ajustes
  9. Celebra cuando tu PR sea fusionado

Revisión de código en equipos

  1. Revisa los cambios propuestos línea por línea
  2. Haz preguntas sobre decisiones de implementación
  3. Sugiere mejoras usando un tono constructivo
  4. Aprueba el PR cuando estés satisfecho con los cambios

Herramientas y funcionalidades avanzadas

Draft Pull Requests

Los Draft PRs (o Work in Progress MRs en GitLab) indican que el trabajo aún no está listo para revisión final:

  • GitHub: Selecciona "Create draft pull request" al crear el PR
  • GitLab: Añade "Draft:" o "WIP:" al principio del título del MR

Revisiones requeridas

Muchos proyectos configuran protecciones de rama que requieren:

  • Un número mínimo de revisiones aprobatorias
  • Aprobación de revisores específicos
  • Pruebas automatizadas pasadas

Squash and Merge

Al fusionar un PR, puedes elegir "squash and merge" para combinar todos los commits en uno solo, manteniendo un historial más limpio.

Conclusión

Los forks y pull requests son herramientas poderosas que facilitan la colaboración en proyectos de software. Permiten que múltiples desarrolladores trabajen en paralelo mientras mantienen un proceso organizado para revisar e integrar cambios. Dominar estos conceptos es esencial para contribuir efectivamente a proyectos de código abierto y para implementar flujos de trabajo de revisión de código en equipos de desarrollo.

En la próxima lección, aprenderemos cómo crear y gestionar una cuenta en GitHub, la plataforma más popular para alojar repositorios Git y colaborar en proyectos.

Configurar un repositorio remoto
Aprende a configurar repositorios remotos en Git, conectar t...
Crear una cuenta en GitHub
Aprende a crear y configurar una cuenta en GitHub, la plataf...

Conceptos Básicos de HTML

Aprende los conceptos básicos de HTML

Conceptos Básicos de CSS

Aprende los conceptos básicos de CSS

Conceptos Básicos de JavaScript

Aprende los conceptos básicos de JavaScript

Conceptos Básicos SQL

Aprende los conceptos básicos de SQL

Conceptos Básicos de Python

Aprende los conceptos básicos de Python

Conceptos Básicos de UML

Aprende los conceptos básicos de UML

Refuerzo Academico de Herramientas de Productividad 2025