Как перенести несколько репозиториев в моно-репо, сохраняя историю коммитов?

Я пытаюсь перенести несколько репозиториев Git в одно хранилище.

У меня есть два репозитория проекта, давайте назовем их project1 а также project2, В моем монореполе я хочу иметь projects каталог с двумя подкаталогами, project1 а также project2, Каждый подкаталог должен содержать файлы из соответствующего проекта с сохранением истории Git.

Это возможно даже со стандартными командами Git?

Примечание: я посмотрел на Лерну - lerna import делает именно то, что мне нужно, но, к сожалению, это работает только с проектами JS, и один из моих проектов - проект Ruby.

1 ответ

Решение

Да, вы можете использовать команды git для достижения.

Migarte два репо в монорепо в подпапку project1 а также project2Вам необходимо переместить файлы в папку репозитория project1/project2, зафиксировать изменения и затем объединить их вместе. Подробные шаги, как показано ниже:

1. Переместите файлы в папки project1 и project2 отдельно

В первом репо (например, repo1), переместите файлы в project1 папка, как показано ниже:

# In local repo1 
mkdir project1
mv * project1
git add .
git command -m 'move files into project1 folder'
git push

Во втором репо (например, repo2), переместите файлы в папку project2, как показано ниже:

# In local repo2
mkdir project2
mv * project2
git add .
git command -m 'move files into project2 folder'
git push

2. перенести два репо в momorepo

В любом локальном репо (например, в местном repo1), выполните следующие команды:

# In local repo1
git remote add repo2 <URL for repo2> -f
git pull repo2 master --allow-unrelated-histories
Другие вопросы по тегам