У меня есть два репозитория git R1
и R2
, которые содержат коммиты
от двух периодов разработки продукта: 1995-1997 и 1999-2013 гг.
(Я создал их путем преобразования существующих репозиториев RCS и CVS в Git.)
R1:
A---B---C---D
R2:
K---L---M---N
Как я могу объединить два репозитория в один, содержащий точное представление о линейной истории проекта?
A---B---C---D---K---L---M---N
Обратите внимание, что между R1
и R2
файлами были добавлены, удалены и переименованы.
Я попытался создать пустой репозиторий и затем слить их содержимое на него.
git remote add R1 /vol/R1.git
git fetch R1
git remote add R2 /vol/R2.git
git fetch R2
git merge --strategy=recursive --strategy-option=theirs R1
git merge --strategy=recursive --strategy-option=theirs R2
Однако это оставляет в конце файлы, которые были в редакции D
,
но не в редакции K
.
Я мог бы синтезировать фиксацию для удаления дополнительных файлов между слияниями,
но это кажется мне неэлегантным.
Кроме того, благодаря такому подходу конечный результат содержит слияния, которые
на самом деле не произошло.