我试图将一些Git存储库迁移到一个monorepo。
我有两个项目存储库,我们称之为project1
和project2
。在我的monorepo中,我希望有一个projects
目录,其中包含两个子目录project1
和project2
。每个子目录应包含相应项目中的文件,并保留Git历史记录。
使用标准Git命令甚至可以实现这一点吗?
注意:我看过Lerna - lerna import
完全符合我的要求,但不幸的是它只适用于JS项目,我的一个项目是Ruby项目。
答案 0 :(得分:4)
是的,您可以使用git命令来实现。
将两个repos转换为monorepo到子文件夹project1
和project2
,您需要将文件移动到repo的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
在任何本地仓库(例如本地repo1
)中,执行以下命令:
# In local repo1
git remote add repo2 <URL for repo2> -f
git pull repo2 master --allow-unrelated-histories