Как повторно основывать один repo другому

Скажем, у меня есть два различных репозитория как так:

Project 1:
Init---A---B---C---HEAD1

Project 2:
Init---D---E---F---G---HEAD2

Есть ли способ повторно основывать Проект 1 (Init для ЗАГОЛОВКА) в фиксацию Init Проекта 2, таким образом, это похоже на это:

Project 1 & 2:
     A---B---C---HEAD1
   /
Init---D---E---F---G---HEAD2

Содержание Проекта 1 и Проекта 2 подобно. Основное различие - то, что их файловая структура немного отличается как так:

Project1:

MyProject/
    File1
    File2
    File3

Project2:

MyParentProject/
    MyProject/
        File1
        File2
        File3
    SomeFolder/
    SomeOtherFolder/
    ...etc/

К вашему сведению: MyProject не является подмодулем MyParentProject. MyProject и MyParentProject существуют в двух отдельных местах как два отдельных репозитория мерзавца.

10
задан dirtytofu 11 February 2010 в 20:27
поделиться

2 ответа

Вы можете рассматривать один как удаленный репозиторий для другого. В Project1 выполните следующие команды:

git remote add project2 <path_to_project_2>
git fetch project2
git branch --track project2Branch project2/master
git checkout project2Branch

Используйте git log, чтобы найти хэш для начальной фиксации этой ветки (которой является Project2). Затем запустите

git checkout master # or whatever branch you want to rebase
git rebase <hash-for-commit>

. Теперь вы перенастроили Project1 на Project2. Поскольку это звучит как одноразовая операция, когда вы будете использовать только один репозиторий, вы можете выполнить очистку с помощью

git remote rm project2

. Итак, теперь ваша основная ветка перебазирована с помощью init Project2, а project2Branch имеет остальную историю Проект2. Это своего рода взлом, но он сделает то, что вы хотите.

13
ответ дан 3 December 2019 в 23:12
поделиться

Я думаю, вы можете использовать git-filter-branch с опцией --parent-filter.

0
ответ дан 3 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: