Pregunta ¿Los git bifes realmente son clones?


Sigo escuchando a la gente decir que están bifurcando el código en git. Git "tenedor" suena sospechosamente como "clonar" git más alguna (sin sentido) disposición psicológica para renunciar a futuras fusiones. No hay comando de horquilla en git, ¿verdad?

Github hace que las horquillas sean un poco más reales al grapar la correspondencia. Es decir, presiona el botón de la horquilla y más tarde, cuando presiona 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 un baile alrededor de la propiedad y los permisos de repo.

¿Si no? ¿Alguna angustia sobre Github extendiendo git en esta dirección? O cualquier rumores de que Git absorba la funcionalidad?


712
2018-06-08 23:45


origen


Respuestas:


Tenedor, en el contexto de GitHub, no extiende Git.
Solo permite clon en el lado del servidor.

Cuando clona un repositorio de GitHub en su estación de trabajo local, no puede contribuir de nuevo con el repositorio ascendente a menos que se declare explícitamente como "colaborador". Eso es porque tu clon es una instancia separada de ese proyecto. Si desea contribuir al proyecto, puede usar bifurcación para hacerlo de la siguiente manera:

  • clonar ese repositorio GitHub en su cuenta GitHub (que es el parte de "horquilla", un clon en el lado del servidor)
  • contribuir contribuye a ese repositorio GitHub (está en su propia cuenta GitHub, por lo que tiene todo el derecho a presionar)
  • señalar cualquier contribución interesante al repositorio original de GitHub (que es el parte de "solicitud de extracción" a través de los cambios que realizó en su propio repositorio de GitHub)

Verifique también "Flujo de trabajo colaborativo de GitHub".

Si desea mantener un enlace con el repositorio original (también llamado en sentido ascendente), debe agregar un control remoto que refiera el repositorio original.
Ver "Cuál es la diferencia entre el origen y el flujo ascendente en github"

fork and upstream


828
2018-06-09 00:37



Sigo escuchando a la gente decir que están bifurcando el código en git. Git "tenedor" suena sospechosamente como "clonar" git más alguna (sin sentido) disposición psicológica para renunciar a futuras fusiones. No hay comando de horquilla en git, ¿verdad?

Creo que tienes una graciosa idea de lo que significa "bifurcar". Es un concepto, no un comando específicamente compatible con cualquier sistema de control de versiones.

El tipo más simple de bifurcación es sinónimo de bifurcación. Cada vez que creas una rama, independientemente de tu VCS, has "bifurcado". Estas bifurcaciones generalmente son bastante fáciles de combinar nuevamente.

El tipo de fork del que se habla, donde una parte separada toma una copia completa del código y se va, necesariamente sucede fuera del VCS en un sistema centralizado como Subversion. Un VCS distribuido como Git tiene un soporte mucho mejor para bifurcar toda la base de código y efectivamente iniciar un nuevo proyecto.

Git (no GitHub) admite nativamente "bifurcar" un repos completo (es decir, clonarlo) de varias maneras:

  • cuando clonas, un control remoto origin es creado para ti
  • por defecto, todas las ramas en el clon seguirán su origin equivalentes
  • buscar y fusionar cambios del proyecto original desde el que bifurcó es trivialmente fácil

Git hace cambios de contribución a la fuente de la horquilla tan simple como pedirle a alguien del proyecto original que lo retire, o solicitando acceso de escritura para hacer retroceder los cambios. Esta es la parte que GitHub hace más fácil y estandariza.

¿Alguna angustia sobre Github extendiendo git en esta dirección? O cualquier rumores de que Git absorba la funcionalidad?

No hay angustia porque su suposición es incorrecta. GitHub "amplía" la funcionalidad de bifurcación de Git con una buena GUI y una forma estandarizada de emitir solicitudes de extracción, pero no lo hace añadir la funcionalidad para Git. El concepto de repo-horcaje completo se integra directamente en el control de versión distribuida en un nivel fundamental. Podrías abandonar GitHub en cualquier momento y seguir impulsando / arrastrando proyectos que hayas "bifurcado".


116
2018-06-09 15:59



Sí Fork es un clon. Surgió porque, no puedes presionar a las copias de los demás sin su permiso. Lo que hacen es hacer una dupdo de eso para ti (tenedor), donde también tendrá permiso de escritura.

En el futuro, si el propietario real u otros usuarios con un tenedor como los cambios pueden volver a su propio repositorio. Alternativamente, puede enviarles una "solicitud de extracción".


67
2018-06-09 21:12



"Tenedor" en este contexto significa "Haga una copia de su código para que pueda agregar mis propias modificaciones". No hay mucho más que decir. Cada clon es esencialmente un tenedor, y corresponde al original decidir si extraer los cambios de la horquilla.


36
2018-06-08 23:51



La clonación implica hacer una copia del repositorio de git en una máquina local, mientras que la duplicación es clonar el repositorio en otro repositorio. La clonación es solo para uso personal (aunque pueden producirse fusiones en el futuro), pero con la bifurcación está copiando y abriendo una nueva ruta de proyecto posible


23
2018-06-09 00:24



Creo que fork es una copia de otro repositorio pero con la modificación de tu cuenta. por ejemplo, si clona directamente otro repositorio localmente, el origen del objeto remoto todavía está usando la cuenta de la que clona. No puedes comprometer y contribuir con tu código. Es solo una copia pura de códigos. De lo contrario, si bifurca un repositorio, clonará el repositorio con la actualización de la configuración de su cuenta en su cuenta github. Y luego clonando el repositorio en el contexto de su cuenta, puede confirmar sus códigos.


9
2018-06-04 19:30



La bifurcación se hace cuando decides contribuir a algún proyecto. Haría una copia de todo el proyecto junto con sus registros de historial. Esta copia está hecha completamente en su repositorio y una vez que realice estos cambios, emite una solicitud de extracción. Ahora depende del propietario de la fuente aceptar su solicitud de extracción e incorporar los cambios en el código original.

El clon de Git es un comando real que permite a los usuarios obtener una copia de la fuente. git clone [URL] Esto debería crear una copia de [URL] en su propio repositorio local.


9
2018-06-11 18:40



Además del hecho de que la clonación es del servidor a su máquina y el bifurcación está haciendo una copia en el servidor, una diferencia importante es que cuando clonamos, en realidad obtenemos todas las ramas, etiquetas, etc. Pero cuando nos bifurcamos, en realidad solo obtenga los archivos actuales en la rama principal, nada más que eso. Esto significa que no obtenemos las otras ramas, etc. Por lo tanto, si tiene que fusionar algo con el repositorio original, se trata de una fusión inter-repo y definitivamente necesitará mayores privilegios.

Fork no es un comando en git, es solo un concepto que Github implementa. Recuerde que Git fue diseñado para funcionar en un entorno de igual a igual sin la necesidad de sincronizar cosas con ninguna copia maestra. El servidor es solo otro igual pero lo vemos como una copia maestra.


7
2018-04-23 05:51



Aquí hay un malentendido con respecto a lo que es un "tenedor". Un tenedor no es más que un conjunto de ramas por usuario. Cuando empujas hacia un tenedor, realmente empujas hacia el repositorio original porque ese es el ÚNICO repo.

Puedes probar esto empujando hacia un tenedor, anotando el compromiso y yendo al repositorio original y usando el ID de compromiso, verás que el compromiso está "en" el repositorio original.

Esto tiene mucho sentido, pero está lejos de ser obvio (solo descubrí esto accidentalmente recientemente).

Cuando John escribe Repo SuperProject, lo que parece suceder en realidad es que todas las ramas del repositorio de origen se replican con un nombre como "John.master" y "John.new_gui_project", etc.

Github "esconde" el "Juan". de nosotros y nos da la ilusión de que tenemos nuestra propia "copia" del repositorio en Github, pero ni siquiera se necesita ni se necesita.

Así que el "maestro" de mi bifurcación en realidad se llama "Korporal.master", pero el UI de Github nunca revela esto, mostrándome solo "maestro".

Esto es más o menos lo que creo que sucede bajo el capó de todos modos basado en cosas que he estado haciendo recientemente y cuando lo ponderas, es un muy buen diseño.

Por esta razón, creo que sería muy fácil para Microsoft implementar las horquillas Git en su oferta de servicios Visual Studio Team.


2
2017-08-26 18:38