¿Importar un proyecto git existente en GitLab?

147

Tengo una cuenta de una instalación de Gitlab donde creé el repositorio "ffki-startseite"

Ahora quiero clonar el repositorio git://freifunk.in-kiel.de/ffki-startseite.giten ese repositorio con todos los commits y ramas, para poder comenzar a trabajar en él en mi propio ámbito.

¿Cómo puedo importarlo?

rubo77
fuente
3
Una nueva característica de gitlab, crear proyecto y luego ir a la página del proyecto. Aquí verás instrucciones básicas.
Martijn van Wezel
Posible duplicado del reflejo del repositorio
kelvin
Las instrucciones básicas se han ido en las versiones más recientes de Gitlab, ¿podría alguien que las hubiera copiado copiarlas aquí?
jdevora

Respuestas:

156

Pude exportar completamente mi proyecto junto con todos los commits, ramas y etiquetas a gitlab a través de los siguientes comandos ejecutados localmente en mi computadora:

Para ilustrar mi ejemplo, usaré https://github.com/raveren/kint como el repositorio de origen que quiero importar a gitlab. Creé un proyecto vacío llamado Kint(debajo del espacio de nombres raveren) en gitlab de antemano y me dijo que la URL http git del proyecto recién creado es http://gitlab.example.com/raveren/kint.git

Los comandos son independientes del sistema operativo.

En un nuevo directorio:

git clone --mirror https://github.com/raveren/kint
cd kint.git
git remote add gitlab http://gitlab.example.com/raveren/kint.git
git push gitlab --mirror

Ahora, si tiene un repositorio clonado localmente que desea seguir usando con el nuevo control remoto, simplemente ejecute los siguientes comandos * allí:

git remote remove origin
git remote add origin http://gitlab.example.com/raveren/kint.git
git fetch --all

* Esto supone que no origincambió el nombre de su maestro remoto , de lo contrario, cambie las dos primeras líneas para reflejarlo.

raveren
fuente
1
Me da el error: remoto: GitLab: No está permitido forzar el código de inserción a una rama protegida en este proyecto. ¡Hasta 10.0.100.89:8496/project/james-project.git ! [rechazado a distancia] maestro -> maestro (gancho previo a la recepción rechazado)
James Hirschorn
44
Tuve que desactivar las ramas protegidas en Configuración -> Repositorio para que esto funcione.
James Hirschorn
Vea mi pregunta por qué usaría --mirror
Martijn van Wezel el
108

Agregue el nuevo control remoto de gitlab a su repositorio existente y presione:

git remote add gitlab url-to-gitlab-repo
git push gitlab master

fuente
Tuve que empujar con fuerza, causa Jugueteé alrededor de gitLab ya: git push gitlab master -f. Ahora tengo todo el repositorio con todos los commits en mi nuevo GitLab;) gracias
rubo77
19
¿No necesitarías hacer un espejo? ¿Qué pasaría si tuvieras otras ramas además del maestro?
slhck
77
Sí, al hacer lo que OP sugiere, se pierden todas las ramas (excepto la maestra) y las etiquetas
raveren
La importación de proyectos de Gitlab cargará el repositorio remoto desde una URL cuando cree el proyecto. Incluye instrucciones para importar repositorios svn.
rickfoosusa
1
git remote add gitlab url-to-gitlab-repo git push gitlab master --mirror
Saurabh
23

Para mantener TODAS LAS ETIQUETAS Y RAMAS

Simplemente ejecute este comando en un existing Git repository

cd existing_repo
git remote rename origin previous-hosts
git remote add gitlab [email protected]:hutber/kindred.com.git
git push -u gitlab --all
git push -u gitlab --tags
Jamie Hutber
fuente
No copiar todas las ramas
Martijn van Wezel
19

Estos son los pasos proporcionados por Gitlab:

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.example.com/rmishra/demoapp.git
git push -u origin --all
git push -u origin --tags
Rajkaran Mishra
fuente
Esto solo empujará al maestro y no a otras ramas
allkenang
18

Este es un movimiento básico de un repositorio a una nueva ubicación. Yo uso esta secuencia todo el tiempo. Con --bare no se verán archivos fuente.

Abre Git Bash.
Cree un clon desnudo del repositorio.

git clone --bare https://github.com/exampleuser/old-repository.git

Mirror-push al nuevo repositorio.

cd old-repository.git

git push --mirror https://github.com/exampleuser/new-repository.git

Elimine el repositorio local temporal que creó en el paso 1.

cd ../
rm -rf old-repository.git

¿Por qué espejo? Ver documentación de git: https://git-scm.com/docs/git-push

--todos empujan todas las ramas (es decir, referencias bajo referencias / cabezas /); No se puede utilizar con otros.

--mirror En lugar de nombrar cada referencia para empujar, especifica que todas las referencias bajo referencias / (que incluyen pero no se limitan a referencias / cabezas /, referencias / controles remotos / y referencias / etiquetas /) se reflejan en el repositorio remoto. Las referencias locales recién creadas se enviarán al extremo remoto, las referencias actualizadas localmente se actualizarán a la fuerza en el extremo remoto y las referencias eliminadas se eliminarán del extremo remoto. Este es el valor predeterminado si la opción de configuración remote..mirror está establecida.

Martijn van Wezel
fuente
¡Funciona también con gitlab!
toalla
12

rastrillo gitlab: import: repos podría ser un método más adecuado para la importación masiva:

  • copie el repositorio simple debajo de repos_path( /home/git/repositories/group/repo.git). El nombre del directorio debe terminar .gity estar debajo de un grupo o espacio de nombres de usuario.
  • correr bundle exec rake gitlab:import:repos

El propietario será el primer administrador y se creará un grupo si aún no existe.

Consulte también: ¿Cómo importar un repositorio de git desnudo existente en Gitlab?

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
fuente
Para aquellos que pueden estar confundidos, el repositorio simple es el repositorio que generalmente está en su lugar en la ubicación centralizada (por ejemplo, github) que NO contiene la carpeta .git en la raíz del repositorio. Esta es solo una opción conveniente si tiene acceso al servidor donde está almacenado el repositorio. De lo contrario, la respuesta de @Raveren es la mejor opción.
TinkerTenorSoftwareGuy
4
git clone --mirror [email protected]:username/repo-name.git

git remote add gitlab ssh://[email protected]/username/repo.git

git push -f --tags gitlab refs/heads/*:refs/heads/*

Es mejor hacerlo a través de ssh, el https podría no funcionar

kazerm
fuente
"el https podría no funcionar" normalmente no es así
Martijn van Wezel
Esto es realmente una cosa ya que las conexiones HTTP pueden estar deshabilitadas. Gracias por la respuesta.
Micah
2

Mover un proyecto de GitHub a GitLab, incluidos problemas, solicitudes de extracción Wiki, hitos, etiquetas, notas de la versión y comentarios

Hay una instrucción exhaustiva sobre GitLab Docs:

https://docs.gitlab.com/ee/user/project/import/github.html

tl; dr

  • Asegúrese de que cualquier usuario de GitHub que desee asignar a los usuarios de GitLab tenga:

    • Una cuenta de GitLab que ha iniciado sesión con el icono de GitHub - o -
    • Una cuenta de GitLab con una dirección de correo electrónico que coincida con la dirección de correo electrónico pública del usuario de GitHub
  • Desde la barra de navegación superior, haga clic en + y seleccione Nuevo proyecto.

  • Seleccione la pestaña Importar proyecto y luego seleccione GitHub.
  • Seleccione el primer botón para Listar sus repositorios de GitHub. Se lo redirige a una página en github.com para autorizar la aplicación GitLab.
  • Haga clic en Autorizar gitlabhq. Se le redirige a la página Importar de GitLab y se enumeran todos sus repositorios de GitHub.
  • Continúe seleccionando qué repositorios importar.

¡Pero lea la página de documentos de GitLab para obtener detalles y ganchos!

(no es mucho)

rubo77
fuente
1

Gitlab está un poco molesto con esta característica. Puede perder mucho tiempo resolviendo problemas, especialmente si su proyecto es muy grande.

La mejor solución sería utilizar la herramienta de creación / importación, no olvide poner su nombre de usuario y contraseña, de lo contrario no importará nada.

Sigue mis capturas de pantalla

ingrese la descripción de la imagen aquí

JBarros35
fuente