我正在尝试将几个 Git 存储库迁移到一个单一存储库中。
我有两个项目存储库,我们称它们为
project1
和project2
。在我的 monorepo 中,我想要一个 projects
目录,其中包含两个子目录 project1
和 project2
。每个子目录应包含相应项目中的文件,并保留 Git 历史记录。
使用标准 Git 命令是否可以做到这一点?
注意:我看过 Lerna -
lerna import
完全符合我的需要,但不幸的是它只适用于 JS 项目,而我的项目之一是 Ruby 项目。
是的,您可以使用 git 命令来实现这一点。
将两个存储库迁移到单一存储库到子文件夹
project1
和project2
中,您需要将文件移动到存储库的project1/project2文件夹中,提交更改,然后将它们组合在一起。详细步骤如下:
###1。分别将文件移动到project1和project2文件夹中 在第一个存储库(例如
repo1
)中,将文件移动到project1
文件夹中,如下所示:
# In local repo1
mkdir project1
mv * project1
git add .
git commit -m 'move files into project1 folder'
git push
在第二个仓库(如
repo2
)中,将文件移动到project2文件夹中,如下所示:
# In local repo2
mkdir project2
mv * project2
git add .
git commit -m 'move files into project2 folder'
git push
###2。将两个存储库迁移到单一存储库
在任何本地存储库(例如本地
repo1
)中,执行以下命令:
# In local repo1
git remote add repo2 <URL for repo2> -f
git pull repo2 master --allow-unrelated-histories
还有一个更简单的步骤,
https://github.com/pingleware/bestbooks的项目是将多存储库转换为单一存储库的一个主要示例,
导入