Как перенести репозиторий 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
    

Ответ 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

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

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

Сейчас в папке делаю

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 с одного сервера на другой.

  1. Давайте предположим, что ваш старый проект называется existing_repo, хранящийся в existing repo папке existing repo.

  2. Создайте репо на вашем новом сервере. Предположим, что URL этого нового проекта - [email protected]:newproject.git

  3. Откройте интерфейс командной строки и введите следующее:

    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
    

Преимущества этого подхода в том, что вы не удаляете ветку, которая соответствует вашему старому серверу.