Как перенести репозиторий GIT с одного сервера на новый



У меня есть сервер, который я снимаю. Единственное, что мне осталось перенести мой репозиторий. Этот сервер указан как источник (мастер) для одного из моих проектов. Как правильно переместить репозиторий, чтобы сохранить историю.

643   16  
git

16 ответов:

чтобы добавить новое местоположение РЕПО,

git remote add new_repo_name new_repo_url

затем переместите содержимое в новое место

git push new_repo_name master

наконец удалить старый

git remote rm origin

после этого вы можете сделать то, что сказал bdonlan и отредактировать.git / config файл для изменения new_repo_name в origin. Если вы не удалите origin (исходный удаленный репозиторий), вы можете просто просто нажать изменения в новое РЕПО с помощью

git push new_repo_name master

Если вы хотите перенести все ветки и теги, вы должны использовать следующие команды:

git clone --mirror [oldUrl]

клонировать старое РЕПО со всеми ветками

cd the_repo
git remote add remoteName newRepoUrl

для установки нового пульта дистанционного управления

git push -f --tags remoteName refs/heads/*:refs/heads/*

чтобы подтолкнуть все ссылки под refs / heads (что, вероятно, то, что вы хотите)

это сработало для меня безупречно.

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

Я должен упомянуть, что это создает зеркало вашего текущего РЕПО, а затем толкает его в новое место. поэтому это может занять некоторое время для больших репозиториев или медленных соединений.

скопировать его. Это действительно так просто. :)

на стороне клиента, просто редактировать .git / config в локальном репозитории клиента, чтобы указать ваши удаленные устройства на новый URL-адрес по мере необходимости.

Я просто перепечатываю то, что другие сказали, в простом списке инструкций.

  1. переместить в хранилище: просто войдите на новый сервер, cd в родительский каталог, где теперь вы хотите хранить репозиторий, и использовать rsync скопировать со старого сервера:

    new.server> rsync -a -v -e ssh [email protected]:path/to/repository.git .
    
  2. чтобы клиенты указывали на новый репозиторий: теперь на каждом клиенте, использующем репозиторий, просто удалите указатель на старое происхождение, и добавить один к новому.

    client> git remote rm origin
    client> git remote add origin [email protected]:path/to/repository.git
    

Это сделано в некоторых других ответов.

git clone --mirror git@oldserver:oldproject.git
cd oldproject.git
git remote add new git@newserver:newproject.git
git push --mirror new

взгляните на этот рецепт на GitHub: https://help.github.com/articles/importing-an-external-git-repository

я попробовал несколько методов, прежде чем обнаружить git push --mirror.

работал как шарм!

я следовал инструкциям на 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

работал хорошо для меня.

Вы можете использовать следующую команду :

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)

пожалуйста, выполните следующие действия:

  • git remote add new-origin
  • git push --all new-origin
  • git push -- теги new-origin
  • git remote RM origin
  • git remote переименовать new-origin origin

должно быть так:

git remote set-url origin git://new.url.here

таким образом, вы сохраните имя origin для вашего нового РЕПО-затем нажмите на новое РЕПО старое, как описано в других ответах. Предположим, вы работаете в одиночку, и у вас есть локальное РЕПО, которое вы хотите отразить со всем своим cruft в нем, вы также можете (изнутри вашего локального РЕПО)

git push origin --mirror # origin points to your new repo

но вижу достаточно ли "git push --mirror" для резервного копирования моего репозитория? (во всех не использовать --mirror но один раз).

следуйте этим инструкциям, если вы хотите сохранить все коммиты и ветви от старого до Нового РЕПО

git clone --bare <old-repo-url>
cd <old-repo-directory>
git push --mirror <new-repo-url>

вся информация (Оргин, хобот, ЕТК.) о репозитории хранятся в папке с именем '.git', где вы инициализируете репозиторий. Итак, вам нужно скопировать содержимое на новый сервер, используя инструкции здесь

можно использовать git-copy для дублирования РЕПО со всеми историями.

git copy http://a.com/old.git http://a.com/new.git

Если вы хотите перенести репозиторий #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

будет копировать только главную ветвь (только ветви отслеживания) в новый репозиторий.

если вы хотите перейти от одного источника к другому, а также сохранить резервную копию вашего текущего источника на локальном компьютере, вы можете использовать следующие шаги:

  1. сначала локально перейдите в папку (git), которую вы хотите переместить
  2. создать новый репозиторий онлайн Этот шаг создает репозиторий, где мы можем нажать код

теперь в папке do

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>

приведенная выше команда возвращает удаленный источник к текущему источнику: вы хотите этого, потому что вы находитесь в существующей папке, и вы, вероятно, не хотите перепутать ваше текущее имя локальной папки с новой папкой, которую вы собираетесь создать для клонирования РЕПО, которое вы только что нажали.

надеюсь, это поможет,

Comments

    Ничего не найдено.