Для копирования или перемещения удалённого репозитория с одного удалённого сервера на другой нужно использовать опцию --mirror. Эта опция делает голую (bare) копию этого репозитория.
1 |
git clone --mirror sourceurl.git |
затем изменим URL удалённого репозитория с помощью команды:
1 |
git remote set-url origin http://newurl.git |
И запушим все ветки в новый репозиторий:
1 |
git push origin --mirror |
Имейте в виде, что опция --mirror создаёт голый (bare) репозиторий, то есть созданный репозиторий не имеет локального рабочего каталога.
С последней командой ( push) могут возникнуть проблемы, если в вашем репозитории есть pull request-ы. В этом случае команда не выполнится, а в консоли будут ошибки вида pre-receive hook и список pull request-ов. В таком случае вы можете удалить из своей копии репозитория эти pull request-ы с помощью команды:
1 |
git update-ref -d refs/pull-requests/<имя> |
Увидеть список всех pull request-ов (а заодно и других веток и меток) можно командой:
1 |
git show-ref |