我们的 GitHub OSS 项目最近更改为 monorepo。因此,目录结构发生了变化,并为我编写的部分创建了一个新文件夹。
我想将我的分支重新定位到这个新的 monorepo 上,进入正确的文件夹。我尝试了几次,但搞砸了。
所以,之前的文件夹结构是:
root-directory-for-my-part/...(src etc.)
现在是:
monorepo-directory/root-directory-for-my-part/...(src etc.)
另一个贡献者设置了该 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-branchupstream/next
并复制提交哈希git rebase -i ${HASH}
使用上面的提交哈希- 压缩了提交(如上面链接的指南中所示)
git log
似乎报告说,现在我的custom-insertion-point
分支上确实只有一次提交
我想到目前为止这是正确的。现在我需要以某种方式将压缩的提交重新设置到新的 monorepo 上,但在正确的子文件夹中。
我尝试这样做:
git rebase 上游/下一个
这导致了一系列冲突,我的整个本地工作树被更改为复制 monorepo(但没有我自己的代码)...
<小时/>更新2:
我再次尝试了以下命令:
git rebase 上游/下一个
问题是所有内容最终都出现在错误的文件夹中。我为自己创建的新文件最终位于 monorepo 的根目录中。在我的部分之前存在的其他文件,但我为我的部分进行了修改,最终位于正确的子文件夹中。
最佳答案
您应该进行 merge 而不是 rebase ,因为实际上,这是 merge 。 还有一个很好的 github 帮助页面 Git subtree merges这主要是您想要实现的目标。
另外,值得注意的是 git 有一个名为 subtree
的组件。
您可以查看git subtree
输出/文档。
关于javascript - 移动到 monorepo 后重新设置分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56222475/