¿Son las bifurcaciones de Git en realidad clones de Git?
Sigo escuchando a gente decir que están bifurcando código en Git. Git "fork" suena sospechosamente a Git "clone" más cierta voluntad psicológica (sin sentido) de renunciar a futuras fusiones. No hay ningún comando fork en Git, ¿verdad?
GitHub hace que las bifurcaciones sean un poco más reales al graparles correspondencia. Es decir, presionas el botón de bifurcación y luego, cuando presionas el botón de solicitud de extracción, el sistema es lo suficientemente inteligente como para enviar un correo electrónico al propietario. Por lo tanto, es un poco complicado en torno a la propiedad y los permisos del repositorio.
¿Sí No? ¿Alguna angustia por el hecho de que GitHub extienda Git en esta dirección? ¿O algún rumor de que Git absorba la funcionalidad?
Fork , en el contexto de GitHub, no extiende Git.
Sólo permite clonar en el lado del servidor.
Cuando clonas un repositorio de GitHub en tu estación de trabajo local, no puedes contribuir al repositorio ascendente a menos que estés declarado explícitamente como "colaborador". Esto se debe a que su clon es una instancia separada de ese proyecto. Si quieres contribuir al proyecto, puedes utilizar forking para hacerlo, de la siguiente manera:
- clonar ese repositorio de GitHub en su cuenta de GitHub (esa es la parte "bifurcación" , un clon en el lado del servidor)
- contribuir se compromete a ese repositorio de GitHub (está en su propia cuenta de GitHub, por lo que tiene todo el derecho de acceder a él)
- señalar cualquier contribución interesante al repositorio de GitHub original (es decir, la parte de "solicitud de extracción" a través de los cambios que realizó en su propio repositorio de GitHub)
Consulte también " Flujo de trabajo colaborativo de GitHub ".
Si desea mantener un enlace con el repositorio original (también llamado upstream), debe agregar un enlace remoto que haga referencia a ese repositorio original.
Consulte "¿ Cuál es la diferencia entre origen y ascendente en GitHub? "
Y con Git 2.20 (cuarto trimestre de 2018) y versiones posteriores, la recuperación desde la bifurcación es más eficiente, con islas delta .
Sigo escuchando a gente decir que están bifurcando código en git. Git "fork" suena sospechosamente a git "clone" más cierta voluntad psicológica (sin sentido) de renunciar a futuras fusiones. No hay ningún comando fork en git, ¿verdad?
"Bifurcar" es un concepto, no un comando específicamente respaldado por ningún sistema de control de versiones.
El tipo de bifurcación más simple es sinónimo de ramificación. Cada vez que crea una rama, independientemente de su VCS, se "bifurca". Estas bifurcaciones suelen ser bastante fáciles de volver a fusionar.
El tipo de bifurcación del que estás hablando, donde una parte separada toma una copia completa del código y se marcha, necesariamente ocurre fuera del VCS en un sistema centralizado como Subversion. Un VCS distribuido como Git tiene un soporte mucho mejor para bifurcar todo el código base y comenzar de manera efectiva un nuevo proyecto.
Git (no GitHub) admite de forma nativa "bifurcar" un repositorio completo (es decir, clonarlo) de dos maneras:
- cuando clonas,
origin
se crea un control remoto llamado para ti - De forma predeterminada, todas las ramas del clon rastrearán sus
origin
equivalentes. - Obtener y fusionar cambios del proyecto original del que se bifurcó es trivialmente fácil.
Git hace que contribuir con cambios al origen de la bifurcación sea tan simple como pedirle a alguien del proyecto original que los extraiga de usted o solicitar acceso de escritura para devolver los cambios usted mismo. Esta es la parte que GitHub facilita y estandariza.
¿Alguna angustia por el hecho de que Github extienda git en esta dirección? ¿O algún rumor de que git absorba la funcionalidad?
No hay angustia porque tu suposición es incorrecta. GitHub "extiende" la funcionalidad de bifurcación de Git con una buena GUI y una forma estandarizada de emitir solicitudes de extracción, pero no agrega la funcionalidad a Git. El concepto de bifurcación de repositorio completo está integrado directamente en el control de versiones distribuidas en un nivel fundamental. Podrías abandonar GitHub en cualquier momento y seguir impulsando o retirando proyectos que hayas "bifurcado".
Sí, fork es un clon. Surgió porque no se pueden enviar copias de otras personas sin su permiso . Te hacen una copia ( fork ), donde también tendrás permiso de escritura.
En el futuro, si el propietario real u otros usuarios con una bifurcación como la suya realizan cambios, podrán devolverlo a su propio repositorio. Alternativamente, puede enviarles una "solicitud de extracción".