在Github中将拉取请求合并到默认的不同分支上

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

有没有什么办法可以改变哪个分支的变化会被合并到?

提交者可以改变,当他们发出拉请求,但一旦他们发出,你不能改变它。

另一方面,你可以手动合并他们的分支和推,这是我半定期做错误的拉请求。

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

那gem包装了手工过程,即:

  1. 为您的本地结帐添加一个远程叉子。
  2. 取回那个遥控器。
  3. git checkout ${target_branch} && git merge ${remote}/${branch}
  4. git push origin ...

截至2016年8月15日, GitHub允许通过GUI更改拉取请求的目标分支:

截图

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

使用其他答案提到的hub gem的另一种方法是使用命令行来合并本地pull请求 ,这样可以:

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

上面的命令只有在您首先.git/config下行添加到.git/config文件时才可以直接使用:

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

这样做可以让你下载所有的拉取请求。 GitHub修改了这个说明,指出了git fetch origin pull/ID/head:BRANCHNAME语法,避免修改configuration文件,只下载那个单一的pull请求。

虽然你不能改变现有的拉取请求,但是如果相关的源库仍然存在,你可以很容易地创build一个新的请求 – 是的,即使是别人的。

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

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

丹尼尔·皮特曼的解决scheme没有错,但我会把这些合并视为“不快”,即改变步骤3:

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

通过使用--no-ff ,历史将更容易阅读。 很明显, $n提交来自$branch ,如果你需要恢复在这个分支上做的事情,它也会让你的生活更轻松。

也回答eoinoc的问题,并给出一个额外的提示:

合并之后,你的git cli会提示你写一条消息,通常一般的消息都会显示出来

将远程追踪分支的用户/他们的分支合并到你的分支

确保编辑该消息并包含对请求号码的引用。 那就是:(假设请求号是123)

将远程追踪分支的用户/他们的分支合并到你的分支

#123解决任何…

所以下次你访问你的github问题/ pull-requests页面并且检查那个特定的pull请求时,你会看到你的消息带有一个链接来提交你合并的地方。

这里是我的意思的截图。

在这里输入图像说明

要做到这一点去你的存储库的主页,点击分支,并将默认分支从主更改为其他东西,在我的情况下,“开发”。

之后,每当有人创build一个拉取请求, mergebutton将自动将请求合并到“dev”而不是master。

在这里输入图像说明