合并拉取请求至不同的分支

6
我现在正在维护一个旧的GitHub仓库,有很多废弃的拉取请求被留在了这些老分支上。例如,我现在在v3.5分支上工作,而这些拉取请求是针对3.3及更早版本的。
如果它们针对较旧的版本,我该如何有效地将它们合并到我的新分支中?
如果重要的话,我确定不会有冲突。
我找到了一些关于类似问题的旧问题,但我找不到任何有关如何通过GitHub完成它的信息。还是没有这样的功能吗?我必须通过git手动执行吗?

分支是如何创建的?所有分支都从主分支创建吗?还是例如3.5从3.3创建的分支?我觉得在版本分支中进行PR而不是主分支很奇怪。 - crackmigg
@migg 不幸的是,历史上没有主分支。3.4 是从 3.3 分支出来的,以此类推。最新的分支扮演着主分支的角色。所以现在我在 3.5 中,想要合并所有来自 3.4- 的 PR。 - s1ddok
这个回答解决了你的问题吗?在Github中将拉取请求合并到不同于默认分支的分支 - Metro Smurf
3个回答

3
在github的pull-request页面上,有一个名为“命令行指南”的链接。如果你想手动完成操作,步骤如下:
  • 从PR目标分支创建一个新的合并分支。检出该合并分支。将PRs按哈希或head refs拉入到合并分支中。
  • 通过拉取、合并或cherry-pick将合并分支合并到您的新目标分支中。

稍微搜索一下,我们可以找到这个关于在GitHub网站上重命名分支的页面renaming branch on github website,它提供了以下建议:
  • 将默认分支设置为旧目标分支。从旧目标分支创建一个不同名称的新分支。
  • 将PR合并到旧目标分支中。将旧目标分支重命名为其他名称。
  • 将您的另一个新分支重命名为旧目标分支名称。

1
所有的拉取请求都保存在这里。
pull/ID/head

您可以通过本地检查拉取请求。
git fetch REMOTENAME pull/ID/head:BRANCHNAME
git checkout BRANCHNAME 

如果您想要所有的拉取请求,可以添加到fetch ref。
这是一个只读地址。如果您无法将其推回或更新拉取请求。
Remote name是远程本地git名称。
这些通过git remote -v显示。

看起来这可以帮助我,但我不太理解你的问题。这到底能让我做什么? - s1ddok
分支名称是什么?这是我的当前分支,还是PR的目标分支?还是PR自己的分支? - s1ddok
分支名称是引用此拉取请求的新本地分支的名称。例如 git fetch oldGit pull/1234/head:old-pull-1234 - exussum
实际上,您使用那种命名方式让我更加困惑了。假设A是我想要将PR合并到的当前分支,B是原始PR的目标分支,ID是PR的ID,C是PR作者的分支名称,那么我应该在这些命令中输入什么内容呢? - s1ddok
你想让我先将PR合并到旧分支中吗? - s1ddok
假设您当前在A分支上,且git remote -v显示oldgit指向旧的存储库地址,则执行以下命令:git fetch oldGit pull/ID/head; git merge FETCH_HEAD - exussum

1

由于旧分支可能不再需要,您可以将拉取请求合并到旧分支中(如拉取请求中最初所请求的),然后从旧分支(例如3.3)创建一个新的拉取请求到新分支(例如3.5)。


这个想法是为了让人们能够下载旧版本而保留旧分支。我不想用新的修复程序来破坏它们。 - s1ddok
你可以使用标签来实现这个目的。 - yorammi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接