Before you can push the original repository to your new copy, or mirror, of the repository, you must create the new repository on sua instância do GitHub Enterprise Server. Nesses exemplos, exampleuser/new-repository
ou exampleuser/mirrored
são os espelhos.
Espelhar um repositório
- Abra TerminalTerminalGit Bash.
- Crie um clone bare do repositório.
$ git clone --bare https://hostname/exampleuser/old-repository.git
- Faça espelhamento/push no novo repositório.
$ cd old-repository $ git push --mirror https://hostname/exampleuser/new-repository.git
- Remova o repositório local temporário que você criou anteriormente.
$ cd .. $ rm -rf old-repository
Espelhar um repositório que contém objetos do Git Large File Storage
- Abra TerminalTerminalGit Bash.
- 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://hostname/exampleuser/old-repository.git
- Navegue até o repositório que você acabou de clonar.
$ cd old-repository
- Extraia os objetos do Git Large File Storage do repositório.
$ git lfs fetch --all
- Faça espelhamento/push no novo repositório.
$ git push --mirror https://hostname/exampleuser/new-repository.git
- Faça push nos objetos do Git Large File Storage do repositório no seu espelho.
$ git lfs push --all https://github.com/exampleuser/new-repository.git
- Remova o repositório local temporário que você criou anteriormente.
$ cd .. $ rm -rf old-repository
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.
- Abra TerminalTerminalGit Bash.
- Crie um clone bare espelhado do repositório.
$ git clone --mirror https://hostname/exampleuser/repository-to-mirror.git
- Defina o local de push no espelho.
$ cd repository-to-mirror $ git remote set-url --push origin https://hostname/exampleuser/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. Para atualizar o espelho, obtenha atualizações e faça push.
$ git fetch -p origin
$ git push --mirror