6. Forks

Cuando quieres contribuir a un proyecto no puedes crear ramas directamente en el repositorio original (a menos que previamente te hayan dado permisos). En su lugar, la manera más estándar de contribuir, es haciendo un fork.

Un fork es una copia completa de un repositorio. Te permite experimentar sin afectar el proyecto original, creando y modificando libremente (ramas, commits, etc.). Una vez que hayas terminado tus cambios, puedes solicitar al repositorio original que acepte tus modificaciones mediante una Pull Request (una fusión entre tu fork y el repositorio original).

Cómo crear un Fork

  1. Ve al repositorio que quieres contribuir
  2. Haz clic en el botón "Fork" (arriba a la derecha)
  3. GitHub creará una copia en tu cuenta
  4. Ahora tienes tu propia versión del proyecto

A continuación ya puedes clonar tu fork localmente:

# Clonar tu fork
git clone git@github.com:tu-usuario/proyecto.git
cd proyecto

# Añadir el repositorio original como "upstream"
git remote add upstream git@github.com:usuario-original/proyecto.git

# Verificar
git remote -v

Ahora tendrás dos remotos:

  • origin: Tu fork
  • upstream: El repositorio original

Sincronizar un fork con el upstream

Con el tiempo, el repositorio original tendrá cambios que tu fork no tiene. Debes sincronizarlos.

# 1. Obtener cambios del upstream
git fetch upstream

# 2. Cambiar a tu rama main
git switch main

# 3. Fusionar cambios del upstream
git merge upstream/main

# 4. Actualizar tu fork en GitHub
git push origin main

GitHub también tiene una forma sencilla de sincronizar tu fork desde la interfaz web:

  1. Ve a tu fork en GitHub
  2. Haz clic en "Fetch upstream"
  3. Selecciona "Fetch and merge"

Una buena práctica es sincroniza antes de empezar a trabajar en cada nueva funcionalidad.

Explorar el código

Antes de contribuir, familiarízate con el proyecto:

# Ver la estructura del proyecto
tree -L 2

# Leer el código principal
cat src/main.js

# Ver el historial de cambios
git log --oneline -n 20

# Ver quién ha contribuido
git shortlog -sn

# Explorar una funcionalidad específica
git log --oneline -- ruta/al/archivo.js

# Ver branches activas
git branch -a
Actividad 1
  1. Busca un proyecto open source que te interese en GitHub.
  2. Lee su README, CONTRIBUTING y CODE_OF_CONDUCT.
  3. Identifica qué licencia usa.
  4. Busca issues.
  5. Crea un fork del proyecto.
  6. Clona tu fork localmente.
  7. Añade el upstream y sincroniza tu fork.

This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.

Will you buy me a coffee?