Для объединения нескольких репозиториев в один в Git можно использовать подмодули. Для этого необходимо создать новый репозиторий, добавить в него подмодули, указав пути к другим репозиториям, и затем загрузить изменения из этих репозиториев в подмодули.
Чтобы перенести изменения из старого репозитория в новый в виде подмодуля со всей историей коммитов, можно использовать следующие шаги:
1. Добавьте старый репозиторий в качестве удаленного репозитория к новому репозиторию:
```bash
git remote add old_repo <URL_старого_репозитория>
```
2. Получите историю коммитов из старого репозитория:
```bash
git fetch old_repo
```
3. Создайте новую ветку для переноса изменений из старого репозитория:
```bash
git checkout -b new_branch old_repo/main
```
4. Перенесите изменения в новую ветку в виде подмодуля:
```bash
git submodule add <URL_старого_репозитория> path_to_submodule
```
5. Закоммитьте изменения и отправьте их в новый репозиторий:
```bash
git add .
git commit -m "Added old repository as submodule"
git push origin new_branch
```
6. После этого вы можете удалить старый репозиторий из удаленных:
```bash
git remote remove old_repo
```
Эти шаги позволят вам перенести изменения из старого репозитория в новый в виде подмодуля с сохранением истории коммитов. Если возникают проблемы с неподтвержденными файлами при чекауте удаленного репозитория, попробуйте использовать вышеописанный подход. Более сложные сценарии могут потребовать использования cherry-pick или других инструментов Git.