Importar um projeto git existente para o GitLab?

147

Eu tenho uma conta de uma instalação do Gitlab onde criei o repositório "ffki-begineite"

Agora, quero clonar o repositório git://freifunk.in-kiel.de/ffki-startseite.gitnesse repositório com todos os commits e branches, para que eu possa começar a trabalhar nele no meu próprio escopo.

Como posso importá-lo?

rubo77
fonte
3
Um novo recurso do gitlab, crie um projeto e vá para a página do projeto. Aqui você verá instruções básicas.
Martijn van Wezel 19/03/19
Possível duplicado de gitlab espelhamento repositório
kelvin
As instruções básicas foram publicadas nas versões mais recentes do Gitlab, alguém que as copiou pode copiá-las aqui?
Jdevora #

Respostas:

156

Consegui exportar totalmente meu projeto, juntamente com todos os commits, branches e tags para o gitlab através dos seguintes comandos executados localmente no meu computador:

Para ilustrar meu exemplo, usarei https://github.com/raveren/kint como repositório de origem que desejo importar para o gitlab. Eu criei um projeto vazio chamado Kint(sob namespace raveren) em gitlab de antemão e que me disse que o http git url do projeto recém-criado há http://gitlab.example.com/raveren/kint.git

Os comandos são independentes do SO.

Em um novo diretório:

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

Agora, se você possui um repositório clonado localmente que deseja continuar usando com o novo controle remoto, basta executar os seguintes comandos *:

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

* Isso pressupõe que você não renomeou seu mestre remoto origin; caso contrário, altere as duas primeiras linhas para refleti-lo.

Raveren
fonte
1
Ele me fornece o erro: remote: GitLab: Você não tem permissão para forçar o código push a uma ramificação protegida neste projeto. Para 10.0.100.89:8496/project/james-project.git ! [remoto rejeitou] mestre -> master (pré-receber gancho declinou)
James Hirschorn
4
Eu tive que desativar as ramificações protegidas em Configurações -> Repositório para que isso funcionasse.
James Hirschorn
Veja a minha pergunta por que você iria usar --mirror
Martijn van Wezel
108

Adicione o novo controle remoto do gitlab ao seu repositório existente e pressione:

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

fonte
Eu tive que empurrar com força, porque eu brincava ao redor em gitlab já: git push gitlab master -f. Agora eu tenho toda a repo com todas as submissões em meu novo gitlab;) graças
rubo77
19
Você não precisaria fazer um espelho? E se você tivesse outros ramos além do mestre?
slhck
7
sim, fazendo como OP sugere, você perde todos os ramos (exceto mestre) e tags
raveren
A importação de projeto do Gitlab carregará o repositório remoto a partir de uma URL quando você criar o projeto. Inclui instruções para importar repositórios svn.
Rickfoosusa
1
git remoto adicionar gitlab git mestre impulso gitlab url-to-gitlab-repo --mirror
Saurabh
23

Para manter TODAS AS TAGS E FILIAIS

Simplesmente execute este comando em um 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
fonte
Não copie todos os ramos
Martijn van Wezel
19

Aqui estão as etapas fornecidas pelo 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
fonte
Isso só vai empurrar mestre e não outros ramos
allkenang
18

Este é um repo básico para uma nova localização. Eu uso essa sequência o tempo todo. Com --bare, nenhum arquivo de origem será visto.

Abra o Git Bash.
Crie um clone simples do repositório.

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

Envio de espelho para o novo repositório.

cd old-repository.git

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

Remova o repositório local temporário que você criou na etapa 1.

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

Por que espelho? Consulte a documentação do git: https://git-scm.com/docs/git-push

--all Empurre todos os ramos (ie refs sob refs / heads /); não pode ser usado com outro.

--mirror Em vez de nomear cada ref para push, especifica que todos os refs em refs / (que incluem, mas não se limitam a refs / heads /, refs / remotes / e refs / tags /) sejam espelhados no repositório remoto. As refs locais recém-criadas serão enviadas para a extremidade remota, as refs atualizadas localmente serão atualizadas à força na extremidade remota e as refs excluídas serão removidas da extremidade remota. Esse é o padrão se a opção de configuração remote..mirror estiver configurada.

Martijn van Wezel
fonte
Também funciona com o gitlab!
toalha
12

rake gitlab: import: repos pode ser um método mais adequado para importação em massa:

  • copie o repositório vazio em repos_path( /home/git/repositories/group/repo.git). O nome do diretório deve terminar em .gite estar em um espaço para nome de grupo ou usuário.
  • corre bundle exec rake gitlab:import:repos

O proprietário será o primeiro administrador e um grupo será criado se ainda não existir.

Veja também: Como importar um repositório bare git existente para o Gitlab?

Ciro Santilli adicionou uma nova foto
fonte
Para aqueles que podem estar confusos, o repositório vazio é o repositório normalmente no local centralizado (por exemplo, github) que NÃO contém a pasta .git na raiz do repositório. Essa é apenas uma opção conveniente se você tiver acesso ao servidor em que o repositório vazio está armazenado. Caso contrário, a resposta de @Raveren é a melhor opção.
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/*

É melhor fazer isso por ssh, o https pode não funcionar

kazerm
fonte
"o https pode não funcionará" isto não é normalmente a coisa
Martijn van Wezel
Isso é verdade, pois as conexões HTTP podem estar desabilitadas. Obrigado pela resposta.
Micah
2

Movendo um projeto do GitHub para o GitLab, incluindo problemas, solicitações pull, Wiki, Marcos, Marcadores, Notas de versão e comentários

Há uma instrução completa sobre o GitLab Docs:

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

tl; dr

  • Verifique se todos os usuários do GitHub que você deseja mapear para os usuários do GitLab têm:

    • Uma conta do GitLab que efetuou login usando o ícone do GitHub - ou -
    • Uma conta do GitLab com um endereço de email que corresponde ao endereço de email público do usuário do GitHub
  • Na barra de navegação superior, clique em + e selecione Novo projeto.

  • Selecione a guia Importar projeto e, em seguida, selecione GitHub.
  • Selecione o primeiro botão para listar seus repositórios do GitHub. Você é redirecionado para uma página no github.com para autorizar o aplicativo GitLab.
  • Clique em Autorizar gitlabhq. Você é redirecionado de volta à página de Importação do GitLab e todos os seus repositórios do GitHub são listados.
  • Continue selecionando os repositórios a serem importados.

Mas por favor leia a página do GitLab Docs para detalhes e ganchos!

(não é muito)

rubo77
fonte
1

O Gitlab está um pouco incomodado com esse recurso. Você pode perder muito tempo solucionando problemas, especialmente se o seu projeto for grande.

A melhor solução seria usar a ferramenta de criação / importação, não esqueça de colocar seu nome de usuário e senha, caso contrário não importará nada.

Siga minhas capturas de tela

insira a descrição da imagem aqui

JBarros35
fonte