git-stitch-import:如何创建一个主分支?

Bob*_*son 3 git version-control

我正在尝试将多个 git 存储库合并到一个新存储库中,每个旧存储库作为新存储库中的子目录。git-stitch-repo 似乎是我想要的工具。

但是,文档不太清楚。我能够遵循它(https://metacpan.org/pod/distribution/Git-FastExport/script/git-stitch-repo),直到“现在可以创建主分支并让它指向”的部分在正确的提交中,删除两个 master-A 和 master-B 分支。”

什么是“正确的提交”,以及如何执行这些步骤?

现在我有几个分支标记为 master-A、master-B 等,它们似乎与原始存储库相对应。我真正想要的只是一个包含所有内容的主分支。听起来有可能到达那里,但我不知道如何到达那里。

小智 5

我是git-stitch-repo作者。根据您的描述,这确实是您正在寻找的工具。

该程序的工作原理如下:

  • git fast-export它会查看从每个存储库的输出中获得的所有提交以进行合并,并为以下内容构建一个新流git fast-import
  • 在新流中,可以将来自任何其他存储库的提交作为父级进行提交
  • 该程序确保如果您过滤掉其他存储库中的所有提交,您将得到原始存储库

由于所有存储库都可以有同名的引用,因此程序会在引用名称末尾添加 、 等,这样您就可以知道新存储库中的每个引用来自哪个存储库-A-B这就是为什么你会得到master-Amaster-B。选择“正确的”主人只是意味着决定哪一个master-Amaster-B是你的新主人master

当前版本的最大问题(我目前正在修复)是,对于存储库 A 中的每个分支点,系统必须决定在哪一侧附加存储库 B 的下一个提交(如果实际上有替代方案)在尊重拼接算法约束的几个有效提交之间。如果所有选项都有效,则选择基本上是随机的。然后 和master-A可以master-B在不同的分支上结束,这通常不是您想要的。(这就是RT #70695所有关于。)

正如我上面所说,我正在努力解决问题,并且我非常希望它能够解决您的问题。我希望能够在几天内发布新版本。