如何在保持提交历史的同时将多个存储库迁移到单一存储库中?

Joe*_*rdi 6 git version-control monorepo

我正在尝试将一些 Git 存储库迁移到一个 monorepo 中。

我有两个项目存储库,让我们称它们为project1project2. 在我的 monorepo 中,我想要一个projects包含两个子目录的目录,project1以及project2. 每个子目录都应包含来自相应项目的文件,并保留 Git 历史记录。

这甚至可以使用标准的 Git 命令吗?

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

Mar*_*Liu 6

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

Migarte 2个回购成monorepo到子文件夹project1project2,你需要将文件移动到PROJECT1 /文件夹项目2回购的,提交更改,然后将它们结合在一起。详细步骤如下:

###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
Run Code Online (Sandbox Code Playgroud)

在第二个 repo(例如repo2)中,将文件移动到 project2 文件夹中,如下所示:

# In local repo2
mkdir project2
mv * project2
git add .
git command -m 'move files into project2 folder'
git push
Run Code Online (Sandbox Code Playgroud)

###2。将两个 repos 迁移到一个 monorepo

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

# In local repo1
git remote add repo2 <URL for repo2> -f
git pull repo2 master --allow-unrelated-histories
Run Code Online (Sandbox Code Playgroud)

  • 如何查看“project1”之前的所有提交?如果我在 monorepo 中执行`git log -- project1`,则只会显示一个提交(即`'将文件移动到 project1 文件夹'`)。有小费吗? (2认同)