如何在维护提交历史记录的同时将多个存储库迁移到mono-repo?

时间:2018-04-26 00:55:04

标签: git version-control monorepo

我试图将一些Git存储库迁移到一个monorepo。

我有两个项目存储库,我们称之为project1project2。在我的monorepo中,我希望有一个projects目录,其中包含两个子目录project1project2。每个子目录应包含相应项目中的文件,并保留Git历史记录。

使用标准Git命令甚至可以实现这一点吗?

注意:我看过Lerna - lerna import完全符合我的要求,但不幸的是它只适用于JS项目,我的一个项目是Ruby项目。

1 个答案:

答案 0 :(得分:4)

是的,您可以使用git命令来实现。

将两个repos转换为monorepo到子文件夹project1project2,您需要将文件移动到repo的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。将两个repos迁移到momorepo

在任何本地仓库(例如本地repo1)中,执行以下命令:

# In local repo1
git remote add repo2 <URL for repo2> -f
git pull repo2 master --allow-unrelated-histories