У меня есть сервер, который я снимаю. Единственное, что я оставил для миграции, - это мой репозиторий. Этот сервер указан как источник (мастер) для одного из моих проектов. Каков правильный способ перемещения хранилища, чтобы сохранить историю.
Как перенести репозиторий GIT с одного сервера на новый
Ответ 1
Чтобы добавить новое местоположение репо,
git remote add new_repo_name new_repo_url
Затем нажмите содержимое на новое место
git push new_repo_name master
Наконец, удалите старый
git remote rm origin
После этого вы можете сделать то, что сказал bdonlan, и отредактировать файл the.git/config, чтобы изменить new_repo_name на начало координат. Если вы не удаляете исходный (исходный удаленный репозиторий), вы можете просто просто изменить изменения в новом репо с помощью
git push new_repo_name master
Ответ 2
Если вы хотите перенести все ветки и теги, вы должны использовать следующие команды:
git clone --mirror [oldUrl]
для клонирования старого репо со всеми ветвями
cd the_repo
git remote add remoteName newRepoUrl
чтобы настроить новый удаленный
git push -f --tags remoteName refs/heads/*:refs/heads/*
чтобы нажать все ссылки refs/head (что, вероятно, вы хотите)
Ответ 3
Это сработало для меня безупречно.
git clone --mirror <URL to my OLD repo location>
cd <New directory where your OLD repo was cloned>
git remote set-url origin <URL to my NEW repo location>
git push -f origin
Я должен упомянуть, что это создает зеркало вашего текущего репо, а затем толкает его в новое место. Следовательно, это может занять некоторое время для больших репозиций или медленных соединений.
Ответ 4
Скопируйте его. Это действительно так просто.:)
На стороне клиента просто отредактируйте .git/config в локальном репо клиента, чтобы указать свои пульты на новый URL по мере необходимости.
Ответ 5
В некоторых других ответах это делается по частям.
git clone --mirror [email protected]:oldproject.git
cd oldproject.git
git remote add new [email protected]:newproject.git
git push --mirror new
Ответ 6
Я просто пересказываю то, что говорили другие, в простой список инструкций.
-
Переместить репозиторий: Просто войдите на новый сервер,
cd
в родительский каталог, где теперь хотите сохранить репозиторий, и используйтеrsync
для копирования из старого сервер:new.server> rsync -a -v -e ssh [email protected]:path/to/repository.git .
-
Сделать клиенты указателями на новый репозиторий: Теперь на каждом клиенте, использующем репозиторий, просто удалите указатель на старое начало и добавьте его в новый.
client> git remote rm origin client> git remote add origin [email protected]:path/to/repository.git
Ответ 7
Взгляните на этот рецепт на GitHub: https://help.github.com/articles/importing-an-external-git-repository
Я попробовал несколько методов, прежде чем открывать git push --mirror
.
Работал как шарм!
Ответ 8
Я следил за инструкциями на BitBucket, чтобы переместить репо со всеми его ветвями. Вот шаги с объяснениями, следующие за символом #
:
cd path/to/local/repo
git remote remove origin # to get rid of the old setting, this was not in the BitBucket instructions
git remote add origin ssh://[email protected]/<username>/<newrepo> # modify URL as needed
git push -u origin --all # pushes _ALL_ branches in one go
git push -u origin --tags # pushes _ALL_ tags in one go
Хорошо работал у меня.
Ответ 9
Следуйте инструкциям:
- git удаленный ввод нового источника
- git push - all new-origin
- git push -tags new-origin
- git remote rm origin
- git удаленное переименование источника нового происхождения
Ответ 10
Вы можете использовать следующую команду:
git remote set-url --push origin new_repo_url
Пример из http://gitref.org/remotes/
$ git remote -v
github [email protected]:schacon/hw.git (fetch)
github [email protected]:schacon/hw.git (push)
origin git://github.com/github/git-reference.git (fetch)
origin git://github.com/github/git-reference.git (push)
$ git remote set-url --push origin git://github.com/pjhyett/hw.git
$ git remote -v
github [email protected]:schacon/hw.git (fetch)
github [email protected]:schacon/hw.git (push)
origin git://github.com/github/git-reference.git (fetch)
origin git://github.com/pjhyett/hw.git (push)
Ответ 11
Должно быть так же просто, как:
git remote set-url origin git://new.url.here
Таким образом, вы сохраняете имя origin
для своего нового репо, а затем переходите к новому репо старого, как описано в других ответах. Предположим, что вы работаете в одиночку, и у вас есть местное репо, которое вы хотите отразить во всем своем крутом в нем, вы также можете (изнутри своего локального репо)
git push origin --mirror # origin points to your new repo
но см. Is "git push --mirror" достаточно для резервного копирования моего репозитория? (вообще не используйте --mirror
, но один раз).
Ответ 12
Вы можете использовать git-copy, чтобы дублировать репо со всеми историями.
git copy http://a.com/old.git http://a.com/new.git
Ответ 13
следуйте этим инструкциям. Если вы хотите сохранить все коммиты и ветки от старого до нового репо
git clone --bare <old-repo-url>
cd <old-repo-directory>
git push --mirror <new-repo-url>
Ответ 14
Вся информация (orgin, trunk и т.д.) о репозитории хранится в папке с именем ".git", где вы инициализируете репозиторий. Итак, вам нужно скопировать содержимое на новый сервер, используя предоставленные инструкции Здесь
Ответ 15
Если вы хотите перенести репозиторий # git с одного сервера на новый, вы можете сделать это следующим образом:
git clone OLD_REPOSITORY_PATH
cd OLD_REPOSITORY_DIR
git remote add NEW_REPOSITORY_ALIAS NEW_REPOSITORY_PATH
#check out all remote branches
for remote in `git branch -r | grep -v master `; do git checkout --track $remote ; done
git push --mirror NEW_REPOSITORY_PATH
git push NEW_REPOSITORY_ALIAS --tags
Все удаленные ветки и теги из старого репозитория будут скопированы в новый репозиторий.
Выполнение этой команды:
git push NEW_REPOSITORY_ALIAS
будет копировать только главную ветку (только ветки отслеживания) в новый репозиторий.
Ответ 16
Если вы хотите перейти от одного источника к другому, а также сохранить резервную копию вашего текущего источника на локальном компьютере, вы можете использовать эти шаги:
- Сначала локально перейдите в папку (git), которую вы хотите переместить
- Создание нового репозитория онлайн. На этом шаге создается репозиторий, в который мы можем отправить код
Сейчас в папке делаю
git remote get-url origin
Приведенная выше команда дает текущий URL удаленного источника, что полезно для возврата источника на последнем шаге
git remote set-url origin [email protected]:folder/newrepo.git
Приведенная выше команда устанавливает удаленное начало в новое местоположение
git push --set-upstream origin develop
Приведенная выше команда переводит текущую активную локальную ветвь в удаленную с разработкой branchname. Конечно, это сохраняет всю историю, так как с git вся история также выдвигается.
git remote set-url origin <original old origin>
Приведенная выше команда устанавливает удаленное происхождение на ваше текущее происхождение: вы хотите это, потому что вы находитесь в существующей папке и, вероятно, не хотите смешивать имя текущей локальной папки с новой папкой, которую вы собираетесь создать для клонирования репозитория. Вы только что подтолкнули к.
Надеюсь это поможет,
Ответ 17
Это вариант этого ответа, который в настоящее время предлагает gitlab "перенести" репозиторий git с одного сервера на другой.
-
Давайте предположим, что ваш старый проект называется
existing_repo
, хранящийся вexisting repo
папкеexisting repo
. -
Создайте репо на вашем новом сервере. Предположим, что URL этого нового проекта -
[email protected]:newproject.git
-
Откройте интерфейс командной строки и введите следующее:
cd existing_repo git remote rename origin old-origin git remote add origin [email protected]:newproject.git git push -u origin --all git push -u origin --tags
Преимущества этого подхода в том, что вы не удаляете ветку, которая соответствует вашему старому серверу.