Облачная платформаEvolution

Миграция из других Git-хостингов


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

Перед началом работы

  1. Cоздайте пустой репозиторий в Repo.

  2. После создания на странице пустого репозитория вы увидите URL для клонирования:

    1. для SSH:

      ssh://git@repo.cloud.ru/<PROJECT_ID>/<REPO_NAME>.git
    2. для HTTPS:

      https://repo.cloud.ru/<PROJECT_ID>/<REPO_NAME>.git

Способ 1. Быстрая миграция

Этот способ подходит, если нужно перенести репозиторий целиком.

  1. Склонируйте репозиторий из внешнего хостинга.

    1. Рекомендуется использовать команду git clone --mirror . Она позволяет перенести все ветки, теги и ссылки.

      git clone --mirror https://github.com/OWNER/REPO.git
    2. Альтернативный способ — стандартная команда git clone .

      git clone https://github.com/OWNER/REPO.git

    После клонирования выполните команды git push --all и push --tags для переноса всех веток и тегов.

  2. Перейдите в каталог репозитория. Если репозиторий был клонирован с помощью git clone --mirror , выполните:

    cd REPO.git

    Если репозиторий был клонирован с помощью git clone , выполните:

    cd REPO
  3. Укажите REPO в качестве нового origin, задав URL из UI:

    git remote set-url origin ssh://git@repo.cloud.ru/<PROJECT_ID>/<REPO_NAME>.git
  4. Отправьте все ветки и теги в репозиторий:

    git push repo --all
    git push repo --tags

После успешного выполнения команды git push репозиторий будет полностью скопирован в Repo со всей историей коммитов, веток и тегов.

Способ 2. Двойной remote в рабочей копии

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

  1. В рабочей копии, склонированной из внешнего хостинга, добавьте Repo как дополнительный репозиторий с помощью команды remote :

    git remote add repo ssh://git@repo.cloud.ru/<PROJECT_ID>/<REPO_NAME>.git
  2. Убедитесь, что сконфигурированы оба репозитория remote:

    git remote -v

    Пример вывода:

    origin https://github.com/OWNER/REPO.git (fetch)
    origin https://github.com/OWNER/REPO.git (push)
    repo ssh://git@repo.cloud.ru/<PROJECT_ID>/<REPO_NAME>.git (fetch)
    repo ssh://git@repo.cloud.ru/<PROJECT_ID>/<REPO_NAME>.git (push)
  3. Синхронизируйте код с актуальным состоянием репозитория:

    git pull origin main

    Или:

    git checkout main && git pull origin main
  4. Отправьте изменения в репозиторий:

    git push repo main
  5. (Опционально) Настройте псевдоним alias для одновременной отправки в оба хостинга.

    Создайте alias для одновременного отправки в origin и Repo:

    git config alias.pushall '!git push origin && git push repo'

    Теперь команда git pushall отправит изменения в оба хранилища.