如何 edit/push/pull 父节点的父节点在 GitHub 上分叉

How to edit/push/pull the parent of a parent fork on GitHub

对于一个项目,我正在使用一个名为 Efficientnet-pytorch-3d 的 Python 包(this github page). This 3D implementation is forked from a 2D implementation called Efficientnet-pytorch (this github 页面)。 github 上的分叉顺序是这样的:

lukemelas/EfficientNet-PyTorch -> shijianjian/EfficientNet-PyTorch-3D/ ->  nwschurink/EfficientNet-PyTorch-3D

如您所见,我将包的 3D 实现分叉到 own GitHub,因为我需要添加一些我缺少的功能。我更改了代码并对 shijianjian/Efficientnet-Pytorch-3D 存储库执行了拉取请求,以将其合并到主库中。

好的,现在我的问题来了。在 2D Efficientnet-pytorch GitHub 的问题页面上,我发现有人在询问我添加到 3D 实现中的功能。我可以轻松地将其添加到代码中,但是由于 2D 和 3D 代码现在完全不同,因此不可能只对我对 Efficientnet-PyTorch-3D 代码所做的更改执行拉取请求。显然不可能也将 lukemela/EfficientNet-PyTorch 分叉到我的 github...

如何将代码从原始存储库 (lukemelas/EfficientNet-PyTorch) 提取到我的 GitHub,进行更改,然后将其推送到 lukemelas/EfficientNet-PyTorch?

我只能找到有关如何将您的代码推送到我拥有的分支的父级(例如 shijianjian/EfficientNet-PyTorch-3D)的指南,但我似乎无法找到如何到达父级的父级。

这里我将如何处理。

添加上游

git remote add upstream_2D git@github.com:lukemelas/EfficientNet-PyTorch.git

获取内容

git fetch upstream_2D

创建一个指向上游主节点(或最后一个共同祖先,见下文)的分支。

git checkout -b mySuperFix  upstream_2D/master

在这里打补丁并提交你的 Pull Request

然后如果你愿意并且可能的话,将这个分支合并到你的 master 分支。

2D 项目的一些提交没有合并到 3D 项目中,3D 分支似乎没有与 2D 项目保持同步。

所以我认为你的工作应该基于最后的共同祖先:

git checkout -b mySuperFix  d8481a539cc1f84ef0fe502f9c12dcc187669611

这可能更容易,或者您可以先将 2D 提交合并到 3D 项目中,然后基于 2D 母版进行提交