Bifurcación del repositorio de Git de GitHub a GitLab

93

Supongamos que me gustaría implementar una solución a un proyecto de otra persona. Ese proyecto reside en GitHub.

Podría crear una bifurcación en GitHub e implementar la solución.

Sin embargo, me gustaría crear mi bifurcación en GitLab en lugar de en GitHub.

¿Es eso posible? ¿Cómo?

He leído este artículo: https://about.gitlab.com/2016/12/01/how-to-keep-your-fork-up-to-date-with-its-origin/

De todos modos, no estoy seguro de qué debo hacer en mi caso.

  • ¿Debo crear una bifurcación en GitLab del proyecto desde GitHub de alguna manera?
  • ¿O debería crear un espejo en GitLab del proyecto desde GitHub?
  • ¿O debería crear un espejo en GitLab y luego bifurcar el espejo?
  • ¿O debería hacer algo completamente diferente?

Cuál es el enfoque correcto.

Gracias.

ACTUALIZAR

La duplicación del repositorio en GitLab probablemente no tenga sentido. Puedo crear un espejo de MI repositorio de GitHub en GitLab pero no puedo crear un espejo de un repositorio de otra persona.

https://docs.gitlab.com/ee/workflow/repository_mirroring.html

Esto es lo que he hecho hasta ahora:

He clonado el proyecto GitHub original en mi máquina local. Envié la corrección a una nueva rama en mi repositorio local. He creado un proyecto vacío en GitLab. Establecí el origen en mi repositorio local para ese proyecto vacío en GitLab y envié ambas ramas a GitLab. He configurado aguas arriba en mi repositorio local al repositorio de GitHub.

Cuando quiero obtener nuevas confirmaciones del repositorio de GitHub original al repositorio de GitLab (es decir, sincronizar los repositorios), puedo hacer esto usando mi repositorio local como paso intermedio. Sin embargo, no existe una conexión directa entre el repositorio en GitHub y el repositorio en GitLab. ¿Mi configuración es correcta? ¿Hay alguna diferencia si hago una bifurcación en GitHub?

Cimlman
fuente

Respuestas:

124

Si solo desea realizar un seguimiento de los cambios, primero cree un repositorio vacío en GitLab (o cualquier otra cosa que esté usando) y clónelo en su computadora.

Luego agregue el proyecto GitHub como el control remoto " ascendente " con:

git remote add upstream https://github.com/user/repo

Ahora puede buscar y extraer del flujo ascendente en caso de que haya algún cambio. (También puede insertarlo o fusionarlo si tiene derechos de acceso).

git pull upstream master

Finalmente, regrese a su propio repositorio de GitLab:

git push origin master

Si no desea extraer manualmente el origen upstream / push, GitLab ofrece una capacidad de duplicación en Configuración => Repositorio => Replicación de repositorios.

Chris Watts
fuente
15
Solo me gustaría complementar esta respuesta sobre por qué este es el enfoque correcto. "Forking" es un concepto creado por GitHub, por lo que solo existe en GitHub, sin embargo es útil. Si considera el git puro en sí mismo (como un servidor git puro que se ejecuta en algún lugar de su red), sería como clonar el repositorio en su propio servidor y luego clonarlo en su computadora local. Entonces agregaría el repositorio original como el upstream localmente. Creo que eso es lo que hace GitHub detrás de escena.
Bruno Finger
9
Sólo quiero añadir que se bifurcan hace existir en GitLab, ver aquí , por ejemplo.
bellackn
1
Tuve que usar: pull upstream master --allow-unrelated-histories
hmojtaba
¿Cómo se envía una solicitud de extracción más tarde?
Erik Aronesty
1
@ErikAronesty Eso es más complicado ya que las "Solicitudes de extracción" no son una cosa de git, sino de GitHub. Sin embargo, una forma de hacer esto es bifurcar una copia en GitHub y agregar su repositorio bifurcado como otro control remoto, digamos git remote add upstream-fork [email protected]:myuser/repo. Entonces es solo cuestión de git push upstream-fork masterenviar su solicitud de extracción a través del sitio de GitHub.
Chris Watts
17

La forma de solo navegador:

  1. Cree un nuevo proyecto en Gitlab (solo un proyecto vacío con un nombre está bien)
  2. Vaya a Configuración -> Repositorio
  3. Ingrese la URL de GitHub en 'Repositorios de duplicación'
  4. Asegúrese de que 'Dirección del espejo' sea 'Tirar'
  5. Presione el botón 'Espejo del repositorio'
  6. Presiona el ícono de sincronización junto a la entrada que aparece
aksh1618
fuente
No tengo la licencia de Enterprise Edition, es decir, no puedo ver "Repositorios de duplicación" del paso 3. De todos modos, si tuviera dicha licencia, ¿podría crear una duplicación de un repositorio de GitHub de otra persona?
Cimlman
1
@Cimlman Eso es extraño, porque también tengo una licencia gratuita. ¿Quizás volver a comprobar? Debería ser tercero en 'Configuración-> Repositorio'. Para que quede claro: la configuración en la barra lateral, no el menú de perfil.
aksh1618
Después de hacer clic en Configuración -> Repositorio en la barra lateral, puedo ver las secciones Ramas protegidas, Etiquetas protegidas, Implementar claves, Implementar tokens.
Cimlman
2
@Cimlman ¿Estás usando una instancia de gitlab personalizada / local? Tengo muchas más opciones en mi cuenta básica personal en gitlab.com
aksh1618
1
Estamos utilizando una instalación autogestionada, versión 10.7.2. La última versión es la 11.6. Bien, este es un buen punto. :) No puedo probar su solución en nuestro GitLab. De todos modos, el problema ya me queda obsoleto. Se trataba de nuestra corrección de errores personalizada de una biblioteca de terceros. Sin embargo, la corrección de errores ya se ha incorporado al lanzamiento oficial de esa biblioteca.
Cimlman
0

Es posible bifurcar un repositorio privado de github.

  1. Haga clic en nuevo proyecto
  2. Seleccione Importar
  3. Seleccione github
  4. OAuth2 utilizado para autenticar y crear automáticamente la aplicación gitlab
  5. Seleccionar proyecto para bifurcar

^ Acabo de hacer esto con un repositorio privado en github, importado con éxito (incluyendo ramas, etc.). El proyecto importado se mantiene automáticamente privado;)

Daithí
fuente
2
La importación de proyectos requiere un "Token de acceso personal". Intenté generar uno en GitHub. Parece que esta función es útil cuando quiero crear un proyecto en GitLab desde mi proyecto en GitHub. ¿Es esta suposición correcta? La pregunta es sobre bifurcar un proyecto de GitHub de otra persona.
Cimlman
2
-1 porque, y como dice el comentario anterior, la pregunta es sobre bifurcar un proyecto github de otra persona. Las instrucciones de esta respuesta no funcionarán en tal caso.
Nikos Alexandris
1
@NikosAlexandris, ¿estás seguro? ¿No puede crear un token de acceso para su cuenta y acceder al repositorio de otra persona al que tiene acceso de lectura? (por ejemplo, cada repositorio público)
DGoiko
0

En lugar de bifurcar, puede importar cualquier repositorio de GitHub disponible públicamente utilizando solo la interfaz web:

  1. Desde su panel de GitLab, haga clic en Nuevo proyecto
  2. Cambiar a la pestaña Importar proyecto
  3. Haga clic en el botón Repo por URL
  4. Complete la "URL del repositorio de Git" y los campos restantes del proyecto
  5. Haga clic en Crear proyecto para comenzar el proceso de importación.
  6. Una vez completado, será redirigido a su proyecto recién creado

Usé esta técnica recientemente y funciona en cualquier repositorio público incluso sin una cuenta de GitHub. Consulte esta página de documentos de GitLab para obtener la fuente de información.

koceka
fuente
1
OKAY. Y si se agregan nuevas confirmaciones al repositorio original en GitHub, ¿puedo simplemente fusionar los cambios en el repositorio en GitHub? Esta es una operación complicada y tal vez no se pueda realizar sin un repositorio intermedio (consulte el último párrafo de la pregunta).
Cimlman