迁移到monorepo

时间:2019-05-20 13:57:57

标签: javascript git github version-control

我们的GitHub OSS项目最近更改为monorepo。结果,目录结构发生了变化,并为我编写的部分创建了一个新文件夹。

我想将分支重新建立到这个新的monorepo的正确文件夹中。我试了几次,但搞砸了。

因此,以前的文件夹结构是:

  

我的部分的根目录/...(src等)

现在是:

  

我的零件的单目录/根目录...(src等)

另一个贡献者设置了那个monorepo。如何将我的代码重新存储到正确的文件夹中?

我正在使用 git GitHub 。我的分支称为custom-insertion-point。远程回购分支是@next。我已经将原始的远程仓库添加到我的git中,成为upstream,并将我自己的fork添加到了origin


注意:

我以前已经为我做过PR(代码已完成)。我只需要将其重新建立到新的monorepo上即可。

我尝试不成功地遵循本指南:https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request


更新:

到目前为止,我已经完成:

  1. git merge-base my-branch upstream/next并复制了提交哈希值
  2. git rebase -i ${HASH}使用上方的提交哈希
  3. 压缩提交(如上面链接的指南中所述)
  4. git log似乎报告说,我的custom-insertion-point分支上确实只有一个提交

我想到目前为止是正确的。现在,我需要以某种方式将已压缩的提交重新部署到新的monorepo上,但是在正确的子文件夹中。

我试图做:

git rebase upstream/next

那引起了很多冲突,我的整个本地工作树都被更改为复制monorepo(但没有我自己的代码)...


UPDATE2:

我再次尝试了以下命令:

git rebase upstream/next

问题在于,所有内容最终都存放在错误的文件夹中。我为自己创建的新文件最终位于monorepo的根目录中。在我之前,但我自己修改过的其他文件都保存在正确的子文件夹中。

1 个答案:

答案 0 :(得分:1)

您应该进行合并而不是重新设置基准,因为实际上这是合并。 此外,还有一个不错的Git subtree merges的github帮助页面,这主要是您要尝试实现的。

另外,值得注意的是git有一个叫做subtree的贡献。 您可以查看git subtree输出/文档。