Transfiera repositorios de git de GitLab a GitHub: ¿podemos, cómo hacer y las dificultades (si las hay)?

204

¿Se puede transferir repositorios de GitLab a GitHub si es necesario? Si es así, ¿cómo puedo hacer exactamente lo mismo?

Además, ¿hay algún inconveniente al hacerlo o medidas de precaución que deba tener en cuenta antes de hacerlo, dado que puedo decidir eventualmente trasladarlos a GitHub (ya que tiene más funciones en este momento que podría ser útil para mi proyecto) )

boddhisattva
fuente

Respuestas:

210

Puede transferirlos (simplemente agregando un control remoto a un repositorio de GitHub y presionándolos)

  • crear un repositorio vacío en GitHub
  • git remote add github https://[email protected]/yourLogin/yourRepoName.git
  • git push --mirror github

La historia será la misma.

Pero perderá el control de acceso (equipos definidos en GitLab con derechos de acceso específicos en su repositorio)

Si tiene algún problema con la URL https del repositorio de GitHub:

The requested URL returned an error: 403

Todo lo que necesita hacer es ingresar su contraseña de GitHub, pero el OP sugiere:

Entonces es posible que deba presionarlo de la manera ssh. Puedes leer más sobre cómo hacerlo aquí.

Consulte " Empujar a Git devolviendo el código de error 403 fatal: la solicitud HTTP falló ".

VonC
fuente
Gracias, Von: tu respuesta me sirvió, solo agregué un poco a tu respuesta con respecto al cmd exacto, agregue cmd y empuje las cosas de la manera ssh si es necesario. Espero que esté bien.
boddhisattva
@boddhisattva Está bien, pero veo que su edición fue rechazada. Lo he agregado nuevamente en la respuesta.
VonC
55
¿Algún comentario sobre problemas de importación y etiquetas? ¿Se puede importar algo más que código mediante extracción y extracción? Gracias.
@YakovK No conozco un proceso automático que tenga en cuenta las relaciones públicas y los problemas. Al menos, las relaciones públicas en GitHub son ramas (consulte stackoverflow.com/a/30542987/6309 ), por lo que podrían importarse.
VonC
1
@kiki empujará todas las ramas locales, pero si su repositorio local es en sí mismo un clon, solo tendrá master como su rama local desprotegida predeterminada. Primero debe crear las otras ramas locales después de sus ramas de seguimiento remotas reactivas, antes de usar push --mirror. stackoverflow.com/a/18911322/6309 . Vea también la alternativa mencionada en stackoverflow.com/a/24099141/6309 (última oración)
VonC
149

Esto es muy fácil mediante la función de repositorio de importación. Inicie sesión en github.com,

Al lado de la imagen de perfil, encontrará un +clic en el botón y luego habrá una opción import repository. Encontrarás una página como esta. ingrese la descripción de la imagen aquí Se requiere la URL de clonación de su antiguo repositorio, que es la URL de repositorio de gitlab en su caso. luego seleccione Propietario y luego escriba el nombre para este repositorio y haga clic para comenzar a importar.

manoj
fuente
33
Es muy conveniente que GitHub haya agregado eso. Sin embargo, no funcionará si es un GitLab interno detrás de un firewall, lo que representa un gran caso de uso para GitLab.
abalter
77
Solo una nota rápida para cualquier persona que use la opción de importación. Tuve que deshabilitar MFA en GitLab para que esto funcione.
Día D el
2
Esto funciona bien Mucho mejor que la respuesta aceptada
LnxSlck
¿Como si quiero importar sucursal?
coderInrRain
1
El repositorio importado no necesariamente tiene que ser público ahora, ya que github ha hecho que agregar repositorios privados sea gratuito.
Shrey Garg
7

Tuve el problema opuesto y finalmente tuve que crear mi propio script de bash shell para que la compañía migrara los cientos de repositorios de Github a Gitlab debido a un cambio en la política de la compañía.
El script usa la API de Gitlab para crear un repositorio de forma remota e inserta el repositorio de Github en él. Todavía no hay un archivo README.md, pero sh está bien documentado.
Lo mismo se puede hacer de manera opuesta, me imagino. Espero que esto pueda ayudar.
https://github.com/mahmalsami/migrate-github-gitlab/blob/master/migrate.sh

SamiX
fuente
2

Si tiene MFA habilitado en GitLab, debe ir a Configuración del repositorio / Repositorio -> Implementar claves y crear uno, luego usarlo como inicio de sesión mientras importa el repositorio en GitHub

Alex Mokrushin
fuente