Como duplicar um repositório git? (sem bifurcação)
117
Tenho dois repositórios e preciso copiar um inteiro para o outro vazio, que tem níveis de acesso diferentes do primeiro. A cópia e o repositório mãe não devem ser vinculados.
Eu sou novo no git e seria incrível se alguém pudesse me ajudar com isso.
não tenho certeza, mas acho que você poderia simplesmente cloná-lo e usar git config remote.origin.url git: //new.url/proj.git para definir o remote.origin para seu novo representante.
Rufinus
sim o link que acabei de postar faz algo parecido.
Para fazer uma duplicata exata, você precisa executar tanto um clone puro quanto um espelho-push:
mkdir foo; cd foo
# move to a scratch dir
git clone --bare https://github.com/exampleuser/old-repository.git
# Make a bare clone of the repository
cd old-repository.git
git push --mirror https://github.com/exampleuser/new-repository.git
# Mirror-push to the new repository
cd ..
rm -rf old-repository.git
# Remove our temporary local repository
NOTA: o acima funcionará bem com qualquer repositório git remoto, as instruções não são específicas do github
O exemplo acima cria uma nova cópia remota do repo. Em seguida, cloná-lo para sua máquina de trabalho.
O que aconteceria se o antigo e o novo Repositórios tivessem o mesmo nome (e não a mesma URL git). Como em, acabei de Jeremy.gitJeremy.git
clonar
Esta não será uma duplicata exata. Os problemas não serão transferidos.
Slam
Isso preserva a história?
Thomas
@Thomas acabei de fazer isso e sim, preservou toda a minha história na cópia. Observe que depois de enviar e fazer cd no novo repo, ainda não há nada lá porque você
acionou
7
Para que esta resposta funcione com o GitHub, é necessário primeiro criar o novo repositório no GitHub.
Como você instala a gema em primeiro lugar? Esta parece ser a solução mais simples. Votado!
saran3h
Geralmente é parte de uma instalação do Ruby. No Ubuntu, faça sudo apt install ruby.
dano em
9
Se estiver copiando para o GitHub, você pode usar o Importador do GitHub para fazer isso por você. O repositório original pode até ser de outros sistemas de controle de versão.
Isso funciona perfeitamente e até mantém a história - deve ser mais votado
John D
1
Concordo. Essa abordagem é muito mais intuitiva, pode ser feita inteiramente dentro da GUI do Github e não envolve nenhum daqueles disparates confusos de linha de comando. Passos: 1) Na GUI, faça o novo repo, mas não clique na caixa de seleção "Inicializar este repositório com um README" Depois de fazer isso, o Github apresentará uma nova página e uma opção chamada "... ou importar código de outro repositório. " É isso aí!
Lucas F.
5
Se você deseja apenas criar um novo repositório usando todos ou a maioria dos arquivos de um existente (ou seja, como uma espécie de modelo), acho que a abordagem mais fácil é fazer um novo repositório com o nome desejado etc, cloná-lo para sua área de trabalho e, em seguida, basta adicionar os arquivos e pastas desejados.
Você não obtém toda a história etc., mas provavelmente não quer isso neste caso.
Tentei sua abordagem. E recebo esta mensagem de erro:! [remoto rejeitado] mestre -> mestre (gancho de pré-recepção recusado) e várias outras mensagens semelhantes. O último foi: erro: falhou em empurrar alguns refs. Como posso corrigir isso?
Respostas:
Veja https://help.github.com/articles/duplicating-a-repository
Versão curta:
Para fazer uma duplicata exata, você precisa executar tanto um clone puro quanto um espelho-push:
NOTA: o acima funcionará bem com qualquer repositório git remoto, as instruções não são específicas do github
O exemplo acima cria uma nova cópia remota do repo. Em seguida, cloná-lo para sua máquina de trabalho.
fonte
Jeremy.git
Jeremy.git
Você também pode usar git-copy .
Instale com Gem,
Então
fonte
sudo apt install ruby
.Se estiver copiando para o GitHub, você pode usar o Importador do GitHub para fazer isso por você. O repositório original pode até ser de outros sistemas de controle de versão.
fonte
Se você deseja apenas criar um novo repositório usando todos ou a maioria dos arquivos de um existente (ou seja, como uma espécie de modelo), acho que a abordagem mais fácil é fazer um novo repositório com o nome desejado etc, cloná-lo para sua área de trabalho e, em seguida, basta adicionar os arquivos e pastas desejados.
Você não obtém toda a história etc., mas provavelmente não quer isso neste caso.
fonte
Abra o Terminal.
Crie um clone simples do repositório.
cd old-repository.git
fonte