Слияние двух Git-репозиториев - PullRequest
8 голосов
/ 10 февраля 2010

У меня есть один проект git с файловой структурой, подобной этой:

    Project_A/files...

У меня есть другой проект git с файловой структурой, подобной этой:

    Project_B/
        Project_A/files...
        files...

Теперь я хочу объединить проект A с проектом B и продолжить использовать проект B в качестве единственного хранилища.

Я попытался использовать объединение поддеревьев, но я получил сообщение о том, что «Запись« XXX »перекрывает« XXX »»

Есть ли способ объединить проект A с проектом B и сохранить все истории коммитов?

Заранее спасибо!

Ответы [ 2 ]

12 голосов
/ 10 февраля 2010

Вы можете сделать что-то вроде этого:

В Project_A создайте новый подкаталог Project_A и вставьте в него все, чтобы Project_A теперь выглядел как

Project_A/
    Project_A/files...

Затем в Project_B:

git remote add project_A Project_A
git fetch project_A
git branch project_A project_A/master
git checkout -b merge_trial master
git merge project_A

... и исправьте при необходимости на merge_trial (или вспеньте, промойте, повторяйте, пока не получите то, что хотите в отношении конфликтов / перекрытий).

На самом деле я сделал нечто подобное в рамках миграции svn-> git.

1 голос
/ 10 февраля 2010

Если projectB уже содержит projectA в виде подмодуля , вам следует:


Если бы projectA не был подмодулем projectB, я бы порекомендовал извлечь projectA в projectB репо, а затем использовать графт-технику , чтобы связать две линии фиксации вместе, пока не имея дело со всеми конфликтами слияния, которые могли бы возникнуть при классическом слиянии.

См. Вопрос Git вопрос: возможно ли объединить два разных в равных хранилищах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...