Skip to main content

Duplicar um repositório

Para manter um espelho de um repositório sem a bifurcação, é possível executar um comando especial de clone e, em seguida, fazer push do espelho para o novo repositório.

Platform navigation

Observação: caso tenha um projeto hospedado em outro serviço hospedado baseado no Git, você pode importar automaticamente seu projeto para o GitHub usando a ferramenta GitHub Importer. Para obter mais informações, confira "Sobre o Importador do GitHub".

Antes de efetuar push do repositório original para a nova cópia ou espelho do repositório, você precisa criar o repositório no GitHub.com. Nesses exemplos, exampleuser/new-repository ou exampleuser/mirrored são os espelhos.

Espelhar um repositório

  1. Abra TerminalTerminalGit Bash.

  2. Crie um clone bare do repositório.

    git clone --bare https://github.com/EXAMPLE-USER/OLD-REPOSITORY.git
    
  3. Faça espelhamento/push no novo repositório.

    cd OLD-REPOSITORY.git
    git push --mirror https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
    
  4. Remova o repositório local temporário que você criou anteriormente.

    cd ..
    rm -rf OLD-REPOSITORY.git
    

Espelhar um repositório que contém objetos do Git Large File Storage

  1. Abra TerminalTerminalGit Bash.

  2. Crie um clone bare do repositório. Substitua o exemplo de nome de usuário pelo nome da pessoa ou da organização a quem pertence o repositório e substitua o exemplo de nome de repositório pelo nome do repositório que você deseja duplicar.

    git clone --bare https://github.com/EXAMPLE-USER/OLD-REPOSITORY.git
    
  3. Navegue até o repositório que você acabou de clonar.

    cd OLD-REPOSITORY.git
    
  4. Extraia os objetos do Git Large File Storage do repositório.

    git lfs fetch --all
    
  5. Faça espelhamento/push no novo repositório.

    git push --mirror https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
    
  6. Faça push nos objetos do Git Large File Storage do repositório no seu espelho.

    git lfs push --all https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
    
  7. Remova o repositório local temporário que você criou anteriormente.

    cd ..
    rm -rf OLD-REPOSITORY.git
    

Espelhar um repositório em outro local

Se você deseja espelhar um repositório em outro local e ainda obter atualizações do original, é possível clonar um espelho e fazer push das alterações periodicamente.

  1. Abra TerminalTerminalGit Bash.

  2. Crie um clone bare espelhado do repositório.

    git clone --mirror https://github.com/EXAMPLE-USER/REPOSITORY-TO-MIRROR.git
    
  3. Defina o local de push no espelho.

    cd REPOSITORY-TO-MIRROR
    git remote set-url --push origin https://github.com/EXAMPLE-USER/MIRRORED
    

    Assim como um clone bare, um clone espelhado inclui todos os branches remotes e tags, mas todas as referências locais serão substituídas todas as vezes que você fizer fetch, assim ele sempre será o mesmo do repositório original. O push no espelho é simplificado pela configuração da URL para pushes.

  4. Para atualizar o espelho, obtenha atualizações e faça push.

    git fetch -p origin
    git push --mirror
    

Leitura adicional