← Git

Trabajo remoto

¿Cuál es la diferencia entre clonar y hacer un fork de un repositorio?

Ver respuesta — intenta responderla en voz alta primero

Clonar (git clone) copia un repositorio a tu máquina local. Fork crea una copia del repositorio en tu propia cuenta de GitHub, en el servidor. El fork es una función de GitHub para colaborar en proyectos donde no tienes permiso de escritura; clonar es un comando de Git para bajar cualquier repo a tu máquina.

  • Clonar: comando de Git. Copia un repo remoto a tu computadora para trabajar en local. Sigues conectado al remoto original con origin. Sirve cuando tienes permiso de escritura (eres del equipo).
  • Fork: función de GitHub. Crea una copia del repo bajo tu cuenta en el servidor. Es la forma de contribuir a proyectos ajenos (como open source) donde no puedes hacer push directo. Después clonas tu fork a tu máquina.

El flujo típico para contribuir a un proyecto ajeno:

  1. Fork del repo original a tu cuenta.
  2. Clonas tu fork a tu máquina.
  3. Haces cambios y los subes a tu fork.
  4. Abres un Pull Request del fork hacia el repo original.
# CLONAR: bajar un repo a tu máquina (necesitas la URL)
git clone https://github.com/usuario/proyecto.git
# El remoto "origin" apunta al repo original

# FORK: se hace desde la interfaz de GitHub (boton "Fork"),
# o con la CLI oficial de GitHub:
gh repo fork usuario/proyecto --clone
# Crea la copia en tu cuenta Y la clona en un solo paso

# Flujo con fork: mantener un remoto "upstream" al original
git clone https://github.com/TU-USUARIO/proyecto.git   # tu fork
cd proyecto
git remote add upstream https://github.com/usuario/proyecto.git
# origin  -> tu fork (donde subes)
# upstream -> el repo original (de donde traes actualizaciones)
git fetch upstream

Creer que "fork" y "clone" son lo mismo. Clonar solo baja una copia a tu máquina; el fork crea una copia en el servidor, en tu cuenta. Otro error, al contribuir vía fork, es olvidar agregar el remoto upstream al proyecto original y quedarse desactualizado respecto a los cambios que hacen otros.

"Clonar es un comando de Git que copia un repo a mi máquina; lo uso cuando ya tengo permiso de escritura en el proyecto. Un fork es una función de GitHub que crea una copia del repo en mi propia cuenta del servidor, y es la forma de contribuir a proyectos ajenos donde no puedo hacer push directo. El flujo típico de open source es: hago fork, clono mi fork, hago cambios, los subo a mi fork y abro un PR al repo original. Suelo agregar un remoto upstream al original para mantenerme al día."

Reto rápido

Quieres contribuir a un proyecto open source donde no eres colaborador (no tienes permiso de push). ¿Clonas directo el repo original o haces fork primero?

Ver respuesta

Haces fork primero. Como no tienes permiso de escritura en el repo original, no podrías subir tus cambios ahí. El fork crea una copia en tu cuenta a la que sí puedes hacer push; luego clonas tu fork, trabajas, subes a tu fork y abres un Pull Request hacia el proyecto original para que los mantenedores revisen e integren tus cambios.