我们的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
更新:
到目前为止,我已经完成:
git merge-base my-branch upstream/next
并复制了提交哈希值git rebase -i ${HASH}
使用上方的提交哈希git log
似乎报告说,我的custom-insertion-point
分支上确实只有一个提交我想到目前为止是正确的。现在,我需要以某种方式将已压缩的提交重新部署到新的monorepo上,但是在正确的子文件夹中。
我试图做:
git rebase upstream/next
那引起了很多冲突,我的整个本地工作树都被更改为复制monorepo(但没有我自己的代码)...
UPDATE2:
我再次尝试了以下命令:
git rebase upstream/next
问题在于,所有内容最终都存放在错误的文件夹中。我为自己创建的新文件最终位于monorepo的根目录中。在我之前,但我自己修改过的其他文件都保存在正确的子文件夹中。
答案 0 :(得分:1)
您应该进行合并而不是重新设置基准,因为实际上这是合并。 此外,还有一个不错的Git subtree merges的github帮助页面,这主要是您要尝试实现的。
另外,值得注意的是git有一个叫做subtree
的贡献。
您可以查看git subtree
输出/文档。