Перемещение содержимого репозитория Git в другой репозиторий с сохранением истории
Я пытаюсь переместить только содержимое одного репозитория (скажем repo1) в другой существующий репозиторий (скажем repo2) с помощью следующих команд;
- git clone repo1
- git clone repo2
- компакт-диск repo1
- git remote RM origin
- git remote добавить repo1
- git push
но это не работает. Я рассмотрел другой подобный пост, но я только нашел перемещение папка не содержимое.
6 ответов:
Я думаю, что команды, которые вы ищете, являются:
cd repo2 git checkout master git remote add r1remote **url-of-repo1** git fetch r1remote git merge r1remote/master --allow-unrelated-histories git remote rm r1remoteпосле этого
repo2/masterбудет содержать все отrepo2/masterиrepo1/master, а также истории о них обоих.
прекрасно описано здесь https://www.smashingmagazine.com/2014/05/moving-git-repository-new-server/
во-первых, мы должны извлечь все удаленные ветви и теги из существующего репозитория в наш местный индекс:
git fetch originмы можем проверить все недостающие ветви, которые нам нужно создать локальную копию:
git branch -aдавайте использовать SSH-клонированный URL нашего нового репозитория для создания нового удаленного в нашем существующем локальном хранилище репозиторий:
git remote add new-origin [email protected]:manakor/manascope.gitтеперь мы готовы переместить все локальные ветви и теги на новый пульт с именем new-origin:
git push --all new-origin git push --tags new-originдавайте сделаем new-origin удаленным по умолчанию:
git remote rm originпереименовать новый происхождения в исходной точке, так что она становится пульта по умолчанию:
git remote rename new-origin origin
Если вы хотите сохранить существующие ветви и зафиксировать историю, вот один из способов, который сработал для меня.
git clone --mirror https://github.com/account/repo.git cloned-repo cd cloned-repo git push --mirror {URL of new (empty) repo}Теперь предположим, что вы хотите синхронизировать репозитории источника и назначения в течение определенного периода времени. Например, в текущем удаленном РЕПО все еще есть активность, которую вы хотите перенести в новое/заменяющее РЕПО.
git clone -o old https://github.com/account/repo.git my-repo cd my-repo git remote add new {URL of new repo}чтобы снять последние обновления (при условии, что у вас нет локальных изменений):
git checkout {branch(es) of interest} git pull old git push --all newNB: у меня есть тем не менее, чтобы использовать подмодули, поэтому я не знаю, какие дополнительные шаги могут потребоваться, если они у вас есть.
это сработало, чтобы переместить мое локальное РЕПО (включая историю) на мой пульт github.com РЕПО. После создания нового пустого РЕПО на GitHub.com я использую URL-адрес в шаге три ниже, и он отлично работает.
git clone --mirror <url_of_old_repo> cd <name_of_old_repo> git remote add new-origin <url_of_new_repo> git push new-origin --mirrorЯ нашел это по адресу:https://gist.github.com/niksumeiko/8972566
похоже, что вы близки. Предполагая, что это не просто опечатка в вашем представлении, Шаг 3 должен быть
cd repo2вместо repo1. И Шаг 6 должен бытьgit pullНе дави. Переработанный список:1. git clone repo1 2. git clone repo2 3. cd repo2 4. git remote rm origin 5. git remote add repo1 6. git pull 7. git remote rm repo1 8. git remote add newremote
здесь есть много сложных ответов; однако, если вы не заинтересованы в сохранении ветвей, все, что вам нужно сделать, это сбросить удаленный источник, установить восходящий поток и нажать.
это сработало, чтобы сохранить всю историю фиксации для меня.
cd <location of local repo.> git remote set-url origin <url> git push -u origin master
Comments