161

一个拉取请求进入我托管在 Github 上的 repo。默认情况下,它被合并到master分支中。

我有什么办法可以更改更改将合并到哪个分支?

4

6 回答 6

135

自 15.08.2016 起, GitHub 允许通过 GUI 更改拉取请求的目标分支。单击Edit标题旁边的,然后从下拉列表中选择分支。

截屏

您现在可以更改打开的拉取请求的基本分支。创建拉取请求后,您可以修改基础分支,以便将拉取请求中的更改与不同的分支进行比较。通过更改原始拉取请求的基础分支而不是使用正确的基础分支打开新分支,您将能够保留有价值的工作和讨论。

于 2016-08-16T23:30:29.833 回答
55

提交者可以在他们发出拉取请求时更改它,但是一旦他们发出它,您就无法更改它。

另一方面,您可以手动合并他们的分支并推送,我通常会为错误定位的拉取请求执行此操作。

您可能会发现hubgem有助于处理拉取请求的组件。

该 gem 包含了手动过程,即:

  1. 将 fork的遥控器添加到本地结帐。
  2. 拿那个遥控器。
  3. git checkout ${target_branch} && git merge ${remote}/${branch}
  4. git push origin ...
于 2012-02-03T22:14:34.980 回答
15

使用其他答案提到的集线器 gem 的替代方法是使用命令行来合并本地拉取请求,这允许您执行以下操作:

$ git fetch origin
$ git checkout *target_branch*
$ git merge pr/XXX
$ git push origin *target_branch*

仅当您首先将以下行添加到.git/config文件中时,上述命令才能直接工作:

fetch = +refs/pull/*/head:refs/remotes/symbolic_name_origin_or_upstream/pr/*

这样做是允许您下载所有拉取请求。由于大型存储库可能不希望这样做,因此 GitHub 修改了说明以包含git fetch origin pull/ID/head:BRANCHNAME语法,从而避免了修改配置文件并且只下载单个拉取请求。

于 2014-01-13T21:29:29.780 回答
9

尽管您无法更改现有的拉取请求,因为它不是您的,但如果相关的源存储库仍然存在,您可以轻松地创建一个新的请求——是的,即使它是其他人的。

转到提交者的存储库,然后使用相同的提交在他/她的存储库中创建一个新的拉取请求,但请确保您正确设置了正确的目标分支。

然后返回您自己的存储库并接受新的拉取请求。瞧!

于 2014-09-11T20:37:23.763 回答
8

Daniel Pittman 的解决方案没有任何问题,但是我会将这些合并视为“不快进”,也就是说,将第 3 步更改为:

git checkout ${target_branch} && git merge --no-ff ${remote}/${branch}

通过使用--no-ff,历史将更容易阅读。它会清楚地表明$n提交来自$branch,如果您需要恢复在该分支中完成的某些事情,它也会让您的生活更轻松。

还要回答 eoinoc 的问题并提供额外提示:

完成合并后,你的 git cli 会提示你写一条消息,通常会出现一条通用消息,说类似

将远程跟踪分支“用户/他们的分支”合并到您的分支中

确保编辑该消息并包含对拉取请求编号的引用。即:(假设拉取请求编号为123)

将远程跟踪分支“用户/他们的分支”合并到您的分支中

refs #123 解决任何问题...

因此,下次您访问您的 github 问题/拉取请求页面并检查该特定拉取请求时,您将看到您的消息,其中包含提交您进行合并的链接的链接。

这是我的意思的屏幕截图。

在此处输入图像描述

于 2013-11-25T04:50:47.807 回答
6

为此,请转到存储库的主页,单击分支,然后将默认分支从 master 更改为其他内容,在我的情况下为“dev”。

之后,每当有人创建拉取请求时,merge按钮都会自动将请求合并到“dev”而不是 master。

在此处输入图像描述

于 2015-07-09T07:42:47.473 回答