Skip to main content

Дублирование репозиториев

Чтобы сохранить зеркало репозитория без создания вилки, можно выполнить специальную команду клонирования, а затем зеркальную передачу данных в новый репозиторий.

Platform navigation

Примечание. Если у вас есть проект, размещенный в другой службе размещения на основе Git, вы можете автоматически импортировать проект в GitHub с помощью средства GitHub Importer . Дополнительные сведения см. в разделе О GitHub Importer.

Прежде чем отправить исходный репозиторий в новую копию или зеркальное отображение репозитория, необходимо создать новый репозиторий на GitHub.com. В приведенных ниже примерах exampleuser/new-repository или exampleuser/mirrored — это зеркала.

Зеркало репозитория

  1. Откройте ТерминалТерминалGIT Bash.

  2. Создайте "чистый" клон репозитория.

    git clone --bare https://github.com/EXAMPLE-USER/OLD-REPOSITORY.git
    
  3. Отправьте зеркало в новый репозиторий.

    cd OLD-REPOSITORY
    git push --mirror https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
    
  4. Удалите временный локальный репозиторий, созданный ранее.

    cd ..
    rm -rf OLD-REPOSITORY
    

Зеркало репозитория, содержащего объекты Хранилище больших файлов Git

  1. Откройте ТерминалТерминалGIT Bash.

  2. Создайте "чистый" клон репозитория. Замените пример имени пользователя на имя пользователя или организации, которым принадлежит репозиторий, и замените пример имени репозитория на имя репозитория, который нужно дублировать.

    git clone --bare https://github.com/EXAMPLE-USER/OLD-REPOSITORY.git
    
  3. Перейдите к репозиторию, который вы только что клонировали.

    cd OLD-REPOSITORY
    
  4. Извлеките объекты Хранилище больших файлов Git репозитория.

    git lfs fetch --all
    
  5. Отправьте зеркало в новый репозиторий.

    git push --mirror https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
    
  6. Отправьте объекты Хранилище больших файлов Git репозитория в зеркало.

    git lfs push --all https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
    
  7. Удалите временный локальный репозиторий, созданный ранее.

    cd ..
    rm -rf OLD-REPOSITORY
    

Зеркало репозитория в другом расположении

Если вы хотите отобразить репозиторий в другое расположение, а также получать обновления из исходного, можно клонировать зеркало и периодически отправлять изменения.

  1. Откройте ТерминалТерминалGIT Bash.

  2. Создайте "чистый" зеркальный клон репозитория.

    git clone --mirror https://github.com/EXAMPLE-USER/REPOSITORY-TO-MIRROR.git
    
  3. Задайте вашему зеркалу расположение для отправки.

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

    Как и в случае с "чистым" клоном, зеркальный содержит все удаленные ветви и теги, но все локальные ссылки будут перезаписаны при каждом извлечении, поэтому он всегда будет совпадать с исходным репозиторием. Задание URL-адреса для отправок упрощает отправку в зеркало.

  4. Чтобы обновить зеркало, получите обновления и отправьте их.

    git fetch -p origin
    git push --mirror
    

Дополнительные материалы