Перемещение содержимого репозитория Git в другой репозиторий с сохранением истории



Я пытаюсь переместить только содержимое одного репозитория (скажем repo1) в другой существующий репозиторий (скажем repo2) с помощью следующих команд;





  1. git clone repo1

  2. git clone repo2

  3. компакт-диск repo1

  4. git remote RM origin

  5. git remote добавить repo1

  6. git push




но это не работает. Я рассмотрел другой подобный пост, но я только нашел перемещение папка не содержимое.

4042   6  

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 new

NB: у меня есть тем не менее, чтобы использовать подмодули, поэтому я не знаю, какие дополнительные шаги могут потребоваться, если они у вас есть.

это сработало, чтобы переместить мое локальное РЕПО (включая историю) на мой пульт 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

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