Копирование файлов переносит содержимое, но не делает коммиты исходного проекта предками новой ветки. Чтобы сохранить историю, нужно объединить два графа коммитов через обычное слияние.
Подготовка
Работайте в отдельных резервных клонах с чистым рабочим деревом. В исходном репозитории создайте подготовительную ветку и перенесите нужные отслеживаемые файлы в отдельный подкаталог с помощью git mv. Перед переносом проверьте перечень отслеживаемых файлов командой git ls-files, включая скрытые. Каталог .git переносить нельзя. Приведённые далее пути — примеры, подставьте свои значения.
git switch -c prepare-import
mkdir -p imports/source
git mv path/to/tracked-file imports/source/
git commit -m "Prepare source paths"
Импорт в целевой репозиторий и слияние истории
В целевом репозитории создайте ветку для импорта, добавьте исходный репозиторий как удалённый (в качестве локального пути или URL), получите ветку подготовки и выполните слияние, позволяющее объединить несвязанные истории.
git switch -c import-source
git remote add import-src /ABS/PATH/TO/PREPARED-CLONE
git fetch import-src
git merge --no-ff --allow-unrelated-histories import-src/prepare-import
Если возникнут конфликты, слияние приостановится. Проверьте состояние с помощью git status, вручную разрешите конфликты в файлах, затем добавьте изменения и выполните завершение merge-коммита.
# после разрешения конфликтов
git add <файлы>
git commit
Проверка результата
Убедитесь, что ветка импортированной подготовки стала предком текущей ветки и что история объединена. Для проверки используйте команды ниже; дополнительно просмотрите граф истории и содержимое файлов вручную.
git merge-base --is-ancestor import-src/prepare-import HEAD
git log --all --graph --oneline
Обратите внимание: при дальнейшем приёме изменений через pull request сохраняйте merge-историю. Операция squash сведёт набор коммитов в один и приведёт к потере детальной истории. Не удаляйте исходный репозиторий, пока не убедитесь в корректности результата.
Этот метод сохраняет исходные коммиты, перемещая их в подпапку и объединяя графы, что делает историю обоих репозиториев доступной в целевом репозитории.