Transferir repositórios git do GitLab para o GitHub - podemos, como e armadilhas (se houver)?

204

É possível transferir repositórios do GitLab para o GitHub, se necessário. Se sim, como exatamente posso fazer o mesmo?

Além disso, existem armadilhas ao fazer isso ou medidas de precaução que eu preciso ter em mente antes de fazê-lo, uma vez que posso decidir movê-las para o GitHub (pois há mais recursos no momento que posso achar úteis para o meu projeto) )

boddhisattva
fonte

Respostas:

210

Você pode transferi-los (simplesmente adicionando um controle remoto a um repositório do GitHub e pressionando-os)

  • crie um repositório vazio no GitHub
  • git remote add github https://[email protected]/yourLogin/yourRepoName.git
  • git push --mirror github

A história será a mesma.

Mas você perderá o controle de acesso (equipes definidas no GitLab com direitos de acesso específicos no seu repositório)

Se você enfrentar algum problema com o URL https do repositório do GitHub:

The requested URL returned an error: 403

Tudo que você precisa fazer é digitar sua senha do GitHub, mas o OP sugere:

Então você pode precisar empurrá-lo da maneira ssh. Você pode ler mais sobre como fazê-lo aqui.

Consulte " Pressionando para o Git retornando o Código de Erro 403 fatal: a solicitação HTTP falhou ".

VonC
fonte
Obrigado Von - sua resposta foi o truque para mim. Acabei de adicionar um pouco à sua resposta sobre o comando git remote add cmd e empurrar as coisas da maneira ssh, se necessário. Espero que esteja tudo bem.
boddhisattva
@boddhisattva Está tudo bem, mas vejo que sua edição foi rejeitada. Eu o adicionei de volta na resposta.
VonC
5
Algum comentário sobre problemas e etiquetas de importação? Qualquer coisa que não seja código pode ser importada por pull e push? Obrigado.
@YakovK Não conheço um processo automático que leve em consideração relações públicas e problemas. Pelo menos, o PR no GitHub são ramificações (consulte stackoverflow.com/a/30542987/6309 ), para que possam ser importadas.
VonC
1
O @kiki empurrará todas as ramificações locais, mas se o seu repositório local for um clone, ele terá apenas master como ramificação local padrão. Você deve primeiro criar as outras ramificações locais após suas ramificações de rastreamento remoto repsectivas, antes de usá-las push --mirror. stackoverflow.com/a/18911322/6309 . Veja também a alternativa mencionada em stackoverflow.com/a/24099141/6309 (última frase)
VonC 6/17
149

Isso é muito fácil pelo recurso de repositório de importação github.com.

Lado da foto do perfil, você encontrará um +clique no botão e, em seguida, haverá a opção import repository. você encontrará uma página como esta. insira a descrição da imagem aqui É necessário o URL do clone do seu repositório antigo, que é o gitlab repo url no seu caso. selecione Proprietário e digite o nome deste repositório e clique no botão para iniciar a importação.

manoj
fonte
33
É super conveniente que o GitHub tenha adicionado isso. No entanto, não funcionará se for um GitLab interno atrás de um firewall, o que representa um grande caso de uso para o GitLab.
abalter
7
Apenas uma nota rápida para qualquer pessoa que use a opção de importação. Eu tive que desativar o MFA no GitLab para que isso funcionasse.
Dia D
2
Isso funciona bem. Muito melhor do que a resposta aceita
LnxSlck
Como se eu quiser importar uma filial?
coderInrRain
1
O repositório importado não precisa necessariamente ser público agora, pois o github tornou a adição gratuita de repositórios privados.
Shrey Garg 29/10/19
7

Eu tive o problema oposto e finalmente tive que criar meu próprio script bash shell para a empresa migrar as centenas de repositórios do Github para o Gitlab devido a uma alteração na política da empresa.
O script usa a API do Gitlab para criar remotamente um repositório e enviar o repositório Github para ele remotamente. Ainda não existe um arquivo README.md, mas o sh está bem documentado.
A mesma coisa pode ser feita de maneira oposta, imagino. Espero que isso possa ajudar.
https://github.com/mahmalsami/migrate-github-gitlab/blob/master/migrate.sh

SamiX
fonte
2

Se você tiver o MFA ativado no GitLab, vá para Configurações / Repositório do Repositório -> Implementar Chaves e crie uma, e use-a como login ao importar repositório no GitHub

Alex Mokrushin
fonte