Если ваш репозиторий находится на другом Git-хостинге и нужно перенести его в Repo, используйте один из описанных ниже способов.
После создания на странице пустого репозитория вы увидите URL для клонирования:
для SSH:
ssh://git@repo.cloud.ru/<PROJECT_ID>/<REPO_NAME>.git
для HTTPS:
https://repo.cloud.ru/<PROJECT_ID>/<REPO_NAME>.git
Этот способ подходит, если нужно перенести репозиторий целиком.
Склонируйте репозиторий из внешнего хостинга.
Рекомендуется использовать команду git clone --mirror . Она позволяет перенести все ветки, теги и ссылки.
git clone --mirror https://github.com/OWNER/REPO.git
Альтернативный способ — стандартная команда git clone .
git clone https://github.com/OWNER/REPO.git
После клонирования выполните команды git push --all и push --tags для переноса всех веток и тегов.
Перейдите в каталог репозитория. Если репозиторий был клонирован с помощью git clone --mirror , выполните:
cd REPO.gitЕсли репозиторий был клонирован с помощью git clone , выполните:
cd REPO
Укажите REPO в качестве нового origin, задав URL из UI:
git remote set-url origin ssh://git@repo.cloud.ru/<PROJECT_ID>/<REPO_NAME>.git
Отправьте все ветки и теги в репозиторий:
git push repo --allgit push repo --tags
После успешного выполнения команды git push репозиторий будет полностью скопирован в Repo со всей историей коммитов, веток и тегов.
Этот способ подходит, если вы продолжаете работать с внешним хостингом, но хотите, чтобы копия кода всегда была доступна из Repo.
В рабочей копии, склонированной из внешнего хостинга, добавьте Repo как дополнительный репозиторий с помощью команды remote :
git remote add repo ssh://git@repo.cloud.ru/<PROJECT_ID>/<REPO_NAME>.git
Убедитесь, что сконфигурированы оба репозитория 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)
Синхронизируйте код с актуальным состоянием репозитория:
git pull origin main
Или:
git checkout main && git pull origin main
Отправьте изменения в репозиторий:
git push repo main
(Опционально) Настройте псевдоним alias для одновременной отправки в оба хостинга.
Создайте alias для одновременного отправки в origin и Repo:
git config alias.pushall '!git push origin && git push repo'
Теперь команда git pushall отправит изменения в оба хранилища.