从具有多个分支的多存储库到单一存储库

问题描述 投票:0回答:1

我们正在尝试从多仓库转向单一仓库。除了将多个存储库移动到一个存储库之外,我们还在每个存储库上有多个分支。至少我们已经更新了所有分支,使其不位于主分支后面。

multirepo 当前状态

  • 回购1
    • 主要
    • 分支1
    • 分支1
  • repo2
    • 主要
    • 分支1
    • 分支2
  • repo3
    • 主要
    • 分支1
    • 分支2

monorepo 文件夹结构

  • 应用程序/repo1
  • 应用程序/repo2
  • 应用程序/repo3

单一存储库中的预期分支

  • 主要
  • repo1-branch1
  • repo1-分支2
  • repo2-branch1
  • repo2-branch2
  • repo3-branch1
  • repo3-branch2

正如您在上面的示例中看到的,我们希望每个存储库代码都将移动到“apps”文件夹中。 我们希望保留除标签之外的所有提交历史记录。

我们尝试了一些替代方案,但是分支变得很复杂,因为在我们将代码(main)移动到子文件夹(apps/repo1)后,分支将有很大的差异。

任何人都可以按照食谱一步步执行这些任务。

git github repository monorepo
1个回答
0
投票

对于任何寻找此问题解决方案的人:我已经制作了一个要点,其中包含一堆您可以使用的有用(部分)脚本。

基本上我的方法是:

  1. 将所有存储库克隆到一个文件夹中,全部处于同一级别
  2. 创建 monorepo,进行一次提交
  3. 将所有存储库添加为单一存储库的遥控器

现在每个分支:

  1. 根据初始提交在 monorepo 中创建一个同名的分支
  2. 将远程分支合并到当前分支
  3. 要解决冲突:将步骤 1 中克隆的存储库的工作目录复制到单一存储库中的正确位置
  4. git add --all
    将所有文件标记为已暂存且无冲突
  5. 完成合并提交

对于多个存储库中出现的分支,步骤几乎相同,但它们对所有存储库重复步骤 5-8。

© www.soinside.com 2019 - 2024. All rights reserved.