Слияние Git-репозиториев - PullRequest
       2

Слияние Git-репозиториев

2 голосов
/ 15 апреля 2019

У меня есть два хранилища, которые я хотел бы объединить.Давайте назовем их старым и новым стилем.Моя команда перестала использовать старый стиль 31 декабря 2016 года и начала использовать новый стиль 1 января 2017 года. Стиль каталога / проекта был скопирован из старого стиля и перенесен в новый стиль, за исключением истории.Я хотел бы объединить эти две истории вместе, чтобы увидеть, что изменилось в проекте.

Как бы я это сделал?Многие блоги предлагают взять старый стиль и сделать его дочерним каталогом нового стиля, а затем объединить их несвязанные истории.Но я верю, что мои истории связаны.Это может создать впечатление, что базы кода не похожи друг на друга.

old-style: c1--c2--c3--c4--c5 <- master
January 1 2017  
new-style: c1--c2--c3--c4--c5--c6-- <- master

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

old-style: c1--c2--c3--c4--c5 <- master
             January 1 2017  \
                   new-style: c1'--c2'--c3'--c4'--c5'--c6'--c7 <- master
message at c7 indicating that old-style was added to new-style

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

c1--c2--c3--c4--c5--c1'--c2'--c3'--c4'--c5'--c6'--c7-- <- master

1 Ответ

0 голосов
/ 16 апреля 2019

Ваш идеальный график ситуации описывает ребаз, который вы можете сделать.Если у вас есть эти два репозитория в качестве веток, вы можете запустить git rebase --root --onto old-style new-style, что приведет к линейной истории.

Вы также можете использовать --rebase-merges, если new-style является основной веткой разработки, которая используеттипичный рабочий процесс слияния для сохранения коммитов слияния вместо их пропуска.Для этого требуется относительно свежая версия Git.

Если вы действительно хотите использовать слияние, вам нужно слить с --allow-unrelated-histories, так как ветви, при совместном использовании кода, не разделяют фактическую общую фиксацию.

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