Это хорошо объяснено под названием «Дублирование хранилища Git». Взято из github article:
Если вы хотите зеркалировать репозиторий в другом месте, включая получение обновлений от оригинала, вы можете клонировать зеркало и периодически нажимать изменения.
# Make a bare mirrored clone of the repository
git clone --mirror https://github.com/exampleuser/repository-to-mirror.git
# Set the push location to your mirror
cd repository-to-mirror.git
git remote set-url --push origin https://github.com/exampleuser/mirrored
Зеркальный клон включает в себя все удаленные филиалы и тег, но все локальные ссылки будут перезаписаны каждый раз, когда вы запрашиваете, поэтому он всегда будет таким же, как оригинальный репозиторий. Настройка URL-адреса для push-файлов упрощает нажатие на ваше зеркало. Чтобы обновить свое зеркало, выберите обновления и нажмите, которые можно автоматизировать, запустив задание cron.
git fetch -p origin
git push --mirror
Если вы хотите автоматизировать этот процесс с помощью кода или сценарий Ruby, вы можете сделать это, а также с помощью Git Duplicator Рубиновый камень.
Возможный дубликат: http://stackoverflow.com/questions/14288288/gitlab-repository-mirroring –