Как объединить два разных репозитория Git? - PullRequest
1 голос
/ 14 июня 2019

У меня есть два репозитория Github. Один репозиторий находится на удаленном сервере, а другой на локальном сервере. Оба они имеют разные истории коммитов разных файлов и папок. Теперь я хотел объединить их обоих, чтобы они могли размещаться на удаленном сервере как один репозиторий. Пожалуйста, помогите!

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

git reset --soft head ~ CommitSHA (Первый коммит локального репо)

git pull ~ giturlofremoterepo (Перенос удаленного репо в тот же каталог)

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Создайте новый репозиторий git и инициализируйте новым файлом README.

$ mkdir merged_repo
$ cd merged_repo
$ git init 
$ touch README.md
$ git add .
$ git commit -m "Initialize new repo"

Добавить первый удаленный репозиторий

$ git remote add -f first_repo `link_to_first_repo`
$ git merge --allow-unrelated-histories first_repo/master

Создайте подкаталог и переместите в него все файлы first_repo.

$ mkdir first_repo
$ mv * first_repo/
$ git add .
$ git commit -m "Move first_repo files to first_repo directory"

Добавить второй удаленный репозиторий

$ git remote add -f second_repo `link_to_second_repo`
$ git merge --allow-unrelated-histories second_repo/master

Исправьте все конфликты слияний и завершите слияние следующим образом

$ git merge --continue
1 голос
/ 14 июня 2019

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

Клонируйте первый репозиторий и добавьте пульт ко второму

git clone https://first.repo
git remote add other https://second.repo

Получить вторую и проверить ее основную ветвь в локальную ветвь second

git fetch second
git checkout second/master
git checkout -b second

Перебазировать основную ветвь второго хранилища поверх главной ветки первого. Разрешите любой потенциальный конфликт по пути.

git rebase master second

Перемещение в новый вышестоящий репозиторий

git push -u ...

Это приводит к тому, что две истории коммитов объединяются одна за другой.

...