如何在维护提交历史记录的同时将多个存储库迁移到单一存储库中?
How to migrate multiple repositories into a mono-repo while maintaining commit history?
我正在尝试将几个 Git 存储库迁移到一个单一存储库中。
我有两个项目存储库,我们称它们为 project1
和 project2
。在我的 monorepo 中,我想要一个包含两个子目录的 projects
目录,project1
和 project2
。每个子目录应包含相应项目的文件,并保留 Git 历史记录。
标准 Git 命令甚至可以做到这一点吗?
注意:我查看了 Lerna - lerna import
完全符合我的需要,但不幸的是它只适用于 JS 项目,而我的一个项目是 Ruby 项目。
可以,可以使用git命令来实现。
将两个存储库迁移到子文件夹 project1
和 project2
中的 monorepo 中,您需要将文件移动到存储库的 project1/project2 文件夹中,提交更改,然后将它们组合在一起。详细步骤如下:
###1。将文件分别移动到 project1 和 project2 文件夹中
在第一个 repo(例如 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 迁移到 monorepo
在任何本地仓库中(例如在本地 repo1
中),执行以下命令:
# In local repo1
git remote add repo2 <URL for repo2> -f
git pull repo2 master --allow-unrelated-histories
我正在尝试将几个 Git 存储库迁移到一个单一存储库中。
我有两个项目存储库,我们称它们为 project1
和 project2
。在我的 monorepo 中,我想要一个包含两个子目录的 projects
目录,project1
和 project2
。每个子目录应包含相应项目的文件,并保留 Git 历史记录。
标准 Git 命令甚至可以做到这一点吗?
注意:我查看了 Lerna - lerna import
完全符合我的需要,但不幸的是它只适用于 JS 项目,而我的一个项目是 Ruby 项目。
可以,可以使用git命令来实现。
将两个存储库迁移到子文件夹 project1
和 project2
中的 monorepo 中,您需要将文件移动到存储库的 project1/project2 文件夹中,提交更改,然后将它们组合在一起。详细步骤如下:
###1。将文件分别移动到 project1 和 project2 文件夹中
在第一个 repo(例如 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 迁移到 monorepo
在任何本地仓库中(例如在本地 repo1
中),执行以下命令:
# In local repo1
git remote add repo2 <URL for repo2> -f
git pull repo2 master --allow-unrelated-histories