Скопируйте Git-репозиторий в подкаталог существующего репозитория с историей коммитов. - PullRequest
0 голосов
/ 05 апреля 2019

Я хочу скопировать (локальный) Git-репозиторий в подкаталог другого, уже существующего Git-репозитория, сохранив историю без изменений.

Я уже пробовал

cd already-existing-target-repo/
git subtree add -P modules/rocket-module C:/DEV/java/repositories/rocket-module.git/  master

, но командане импортирует историю коммитов.

Я также думал о попытке подхода из здесь , где исходный репозиторий был добавлен как удаленный к целевому репозиторию, включая последующую проверку и шаг перемещения.,Но, к сожалению, есть несколько файлов с одинаковым именем (например, pom.xml).

Как мне сохранить историю коммитов?

1 Ответ

1 голос
/ 05 апреля 2019

Значительно поменяв детали, я успешно выполнил этот процесс, используя git-filter-branch, чтобы переместить все пути фиксации в репо, импортируемом на новый путь, а затем git merge --allow-unrelated-histories, чтобы объединить коммиты в новом подкаталоге с История коммитов главного репо.

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

Этот пост переполнения стека суммирует процесс и предоставляет некоторые сценарии для его выполнения: https://stackoverflow.com/a/43345686/39791 - на странице есть и другие методы, которые также могут работать; Я успешно использовал его для нескольких репозиториев.

...