首页 > 解决方案 > 如何在 GitHub 上编辑/推送/拉取父分支的父级

问题描述

对于一个项目,我使用了一个名为 Efficientnet-pytorch-3d 的 Python 包(这个github 页面)。这个 3D 实现是从一个名为 Efficientnet-pytorch(这个github 页面)的 2D 实现中派生出来的。github上的fork顺序是这样的:

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

如您所见,我将包的 3D 实现分叉到我自己的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?

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

标签: gitpushparent-childgit-forkupstream-branch

解决方案


这里我将如何处理它。

添加上游

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

获取内容

git fetch upstream_2D

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

git checkout -b mySuperFix  upstream_2D/master

在这里做你的补丁并提交你的请求请求

如果需要并且可能的话,然后将此分支合并到您的主分支。

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

所以我认为你应该把你的工作建立在最后一个共同祖先上:

git checkout -b mySuperFix  d8481a539cc1f84ef0fe502f9c12dcc187669611

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


推荐阅读