@fregate
Пишу, думаю

Как правильно слить воедино нескольких репозиториев в GIT?

Добрый день.
Был один моно-репозиторий, со следующей структурой, например
repo/
repo/packages/
repo/packages/pack1/
repo/packages/pack1/[src1, 2, 3, 4]
repo/packages/pack2/
repo/packages/pack2/[srcA, B, C, D]
repo/target/
repo/tests/


В процессе разработки переехали на другой сервис и переделали структуру, что часть каталогов стали подмодулями
repo/
repo/packages/ <---  submodule
repo/target/
repo/tests/

submodule/
submodule/pack1/
submodule/pack1/[src1, 2, 3, 4]
submodule/pack2/
submodule/pack2/[srcA, B, C, D]


Но часть изменений осталась в старом репозитории и хотелось бы изменения принести в новый (получается подмодуль) с историей комитов.

Можно ли такое сделать?

Попытался сделать по простому через добавление remote в основной репозиторий и чекаута из него - не получается, ошибка c кучей файлов
error: The following untracked working tree files would be overwritten by checkout:


$ cd new/repo
$ git remote add origin oldserver git@git-old.service:monorepo.git
$ git checkout oldserver/my-branch


Или только cherry-pick?
  • Вопрос задан
  • 401 просмотр
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Вы перепутали команду. Слияние делается не через Checkout, а через Merge. И предварительно, через filter-repo, нужно подчистить и реорганизовать тот репозиторий, откуда хотите сливать недостающее, чтобы оставить только нужное и в правильном каталоге.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vapaamies
@Vapaamies
Разработчик в прошлом и будущем
При помощи git-filter-repo можно растащить единую историю на историю подмодулей, будто с самого начала на подмодулях было. Придется повозиться, конечно, но оно стоит того, как по мне.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы