Страницы

Поиск по вопросам

четверг, 5 декабря 2019 г.

Перенос git-репозитория

#git #git_push


Есть некоторый репозиторий с ветками master и develop:

git@git.test.com:my-repo-a.git


Есть также пустой репозиторий

git@git.test.com:my-repo-b.git


Как полностью перенести репозиторий a в b?
Под полностью подразумевается, что должны сохраниться все ветки и все коммиты.
    


Ответы

Ответ 1



git clone --bare git@git.test.com:my-repo-a.git git fetch origin git remote add new-origin git@git.test.com:my-repo-b.git git push --mirror new-origin git remote rm origin git remote rename new-origin origin Источник: https://www.smashingmagazine.com/2014/05/moving-git-repository-new-server/ Updated: поправил с учётом комментариев

Ответ 2



если на целевом сервере есть возможность выполнять команды оболочки от имени пользователя, которому принадлежит каталог с хранилищем (в вопросе для иллюстрации указан пользователь git), то можно обойтись без копирования хранилища с исходного сервера на локальный компьютер, а затем на целевой сервер. сделайте текущим каталог с целевым хранилищем: $ cd /путь/к/my-repo-b.git от имени пользователя, которому принадлежит этот каталог, подключите исходное хранилище под каким-нибудь именем, например, copy: $ git remote add --mirror=fetch copy url-исходного-хранилища скопируйте информацию: $ git remote update copy всё. при желании можно удалить ссылку на исходное-хранилище: $ git remote remove copy если у пользователя, которому принадлежит каталог с хранилищем, не разрешён запуск интерактивной оболочки, но у вас есть возможность выполнять команды от имени пользователя root, перечисленное выше можно сделать и от имени root-а, но по завершении, не меняя текущего каталога, надо установить всем файлам/каталогам такого же владельца и группу, как и у текущего каталога, с помощью, например, такой команды (естественно, от того же имени): $ chown -R --reference=. . а если и исходный и целевой сервер — это одна и та же машина, то вместо всего вышеперечисленного можно просто скопировать файлы: $ cp -a /путь/к/my-repo-a.git/* /путь/к/my-repo-b.git/

Ответ 3



Перенос существующего репозитория на удаленный сервер: cd existing_repo git remote rename origin old-origin git remote add origin git@git.test.com:my-repo-b.git git push -u origin --all git push -u origin --tags

Комментариев нет:

Отправить комментарий