javascript - 移动到 monorepo 后重新设置分支

标签 javascript git github version-control

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

我想将我的分支重新定位到这个新的 monorepo 上,进入正确的文件夹。我尝试了几次,但搞砸了。

所以,之前的文件夹结构是:

root-directory-for-my-part/...(src etc.)

现在是:

monorepo-directory/root-directory-for-my-part/...(src etc.)

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

我正在使用gitGitHub。我的分支称为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-branchupstream/next 并复制提交哈希
  2. git rebase -i ${HASH} 使用上面的提交哈希
  3. 压缩了提交(如上面链接的指南中所示)
  4. 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/

相关文章:

git - 使用具有非标准端口的远程存储库

javascript - GitHub 如何检测登录/注销?

python - 在 Github 页面上托管由 Pelican 驱动的博客

javascript - webpack block 中未定义的全局窗口变量

javascript - 如何安全地评估用户输入表达式

git merge 两个具有不同目录结构的分支

github - 如何获取最新的 PR 数据,特别是运行 YAML 作业时的里程碑?

javascript - 复制此 Live Time 核心功能

javascript - 以经过身份验证的用户身份读取 Azure 移动服务表时出现 401 未经授权错误 (Javascript)

git - 在Docker Alpine上构建Git时如何减小Git二进制文件的大小?