Fork
- En inglés: fork (una bifurcación del camino, donde la ruta se divide en dos, igual que el proyecto se separa en dos copias)
En plataformas como GitHub, un fork es una copia de un repositorio en tu cuenta que te permite experimentar con cambios libremente sin afectar al proyecto original. Un fork hace de puente entre el repositorio original y tu copia personal, lo que te permite abrir pull requests para proponer cambios al proyecto original.
¿Por qué usar forks?
Los forks se usan mucho en el desarrollo open source para contribuir a proyectos que pertenecen a otras personas u organizaciones. Al hacer un fork de un repositorio, creas tu propia copia del proyecto en tu cuenta y puedes modificarla sin afectar al código original. Esto te permite:
-
Proponer cambios: Si encuentras un error o quieres añadir una funcionalidad nueva a un proyecto, puedes hacer un fork del repositorio, aplicar tus cambios y abrir una pull request en el repositorio original. Los responsables pueden revisar tus cambios y decidir si quieren integrarlos en el proyecto principal.
-
Experimentar con libertad: Los forks te permiten probar ideas o funcionalidades nuevas sin preocuparte por romper el proyecto original. Puedes hacer cambios en tu fork sin afectar al código principal.
-
Colaborar con otras personas: Los forks permiten colaborar entre desarrolladores. Puedes invitar a otras personas a trabajar en tu fork, revisar tus cambios y aportar sus propias mejoras antes de abrir una pull request en el proyecto original.
La comunidad ha seguido desarrollando forks de muchos proyectos open source populares. Algunos ejemplos destacados:
-
LibreOffice: Un fork de OpenOffice. LibreOffice es una suite ofimática libre y open source que su comunidad ha desarrollado y mejorado a fondo.
-
Jenkins: Originalmente un fork de la herramienta de integración continua Hudson, Jenkins se ha convertido en un servidor de automatización open source muy utilizado.
-
Bitcoin Cash: Un fork de la criptomoneda Bitcoin. Bitcoin Cash se creó para abordar problemas de escalabilidad e implementar funcionalidades distintas.
Forks en flujos de trabajo de Git
Los forks tienen un papel clave en los flujos de trabajo de Git, sobre todo en el desarrollo open source. Un flujo de trabajo típico con forks sería así:
- Encuentra en una plataforma como GitHub un repositorio al que quieras contribuir.
- Haz un fork del repositorio para crear tu propia copia.
- Clona tu fork en tu ordenador.
- Crea una rama nueva para tus cambios.
- Haz tus modificaciones y crea un commit con ellas en tu rama.
- Haz push de tus cambios a tu fork.
- Abre una pull request desde tu fork hacia el repositorio original para proponer tus cambios.
- Los responsables del repositorio original revisan tu pull request, dan feedback y deciden si integran tus cambios.
Forks vs. ramas. Conviene tener claro que los forks son distintos de las ramas. Mientras que las ramas se usan dentro de un único repositorio para gestionar distintas líneas de desarrollo, los forks crean una copia separada de todo el repositorio. Los forks se usan para contribuciones externas y colaboración, mientras que las ramas se usan para el desarrollo interno y la organización dentro de un repositorio.
.gitignoregit checkoutgit configgit taggit worktree