Прежде чем отправить исходный репозиторий в новую копию или зеркальное отображение репозитория, необходимо создать новый репозиторий на ваш экземпляр GitHub Enterprise Server. В приведенных ниже примерах exampleuser/new-repository
или exampleuser/mirrored
— это зеркала.
Зеркало репозитория
-
Откройте ТерминалТерминалGIT Bash.
-
Создайте "чистый" клон репозитория.
git clone --bare https://HOSTNAME/EXAMPLE-USER/OLD-REPOSITORY.git
-
Отправьте зеркало в новый репозиторий.
cd OLD-REPOSITORY.git git push --mirror https://HOSTNAME/EXAMPLE-USER/NEW-REPOSITORY.git
-
Удалите временный локальный репозиторий, созданный ранее.
cd .. rm -rf OLD-REPOSITORY.git
Зеркало репозитория, содержащего объекты Хранилище больших файлов Git
-
Откройте ТерминалТерминалGIT Bash.
-
Создайте "чистый" клон репозитория. Замените пример имени пользователя на имя пользователя или организации, которым принадлежит репозиторий, и замените пример имени репозитория на имя репозитория, который нужно дублировать.
git clone --bare https://HOSTNAME/EXAMPLE-USER/OLD-REPOSITORY.git
-
Перейдите к репозиторию, который вы только что клонировали.
cd OLD-REPOSITORY.git
-
Извлеките объекты Хранилище больших файлов Git репозитория.
git lfs fetch --all
-
Отправьте зеркало в новый репозиторий.
git push --mirror https://HOSTNAME/EXAMPLE-USER/NEW-REPOSITORY.git
-
Отправьте объекты Хранилище больших файлов Git репозитория в зеркало.
git lfs push --all https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
-
Удалите временный локальный репозиторий, созданный ранее.
cd .. rm -rf OLD-REPOSITORY.git
Зеркало репозитория в другом расположении
Если вы хотите отобразить репозиторий в другое расположение, а также получать обновления из исходного, можно клонировать зеркало и периодически отправлять изменения.
-
Откройте ТерминалТерминалGIT Bash.
-
Создайте "чистый" зеркальный клон репозитория.
git clone --mirror https://HOSTNAME/EXAMPLE-USER/REPOSITORY-TO-MIRROR.git
-
Задайте вашему зеркалу расположение для отправки.
cd REPOSITORY-TO-MIRROR git remote set-url --push origin https://HOSTNAME/EXAMPLE-USER/MIRRORED
Как и в случае с "чистым" клоном, зеркальный содержит все удаленные ветви и теги, но все локальные ссылки будут перезаписаны при каждом извлечении, поэтому он всегда будет совпадать с исходным репозиторием. Задание URL-адреса для отправок упрощает отправку в зеркало.
-
Чтобы обновить зеркало, получите обновления и отправьте их.
git fetch -p origin git push --mirror