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

时间:2012-02-03 21:42:33

标签: git github pull-request

拉取请求进入我在Github上托管的仓库。默认情况下,它会合并到master分支。

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

6 个答案:

答案 0 :(得分:58)

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

screenshot

  

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

答案 1 :(得分:52)

提交者可以在发出拉取请求时对其进行更改,但一旦发出请求,您就无法对其进行更改。

另一方面,你可以手动合并他们的分支和推送,这是我经常为错误的拉取请求做的。

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

这个gem包含了手动过程,即:

  1. Add a remote用于分叉到您当地的结账。
  2. 抓取那个遥控器。
  3. git checkout ${target_branch} && git merge ${remote}/${branch}
  4. git push origin ...

答案 2 :(得分:13)

使用其他答案中提到的hub gem的替代方法是use the command line to merge locally pull requests,它允许您这样做:

$ 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语法,这避免了修改配置文件,只下载了单个拉取请求。

答案 3 :(得分:8)

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

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

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

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

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

  

将远程跟踪分支'user / their-branch'合并到您的分支

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

  

将远程跟踪分支'user / their-branch'合并到您的分支

     

参考#123解决任何问题......

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

以下是我的意思截图。

enter image description here

答案 4 :(得分:7)

虽然您不能更改现有的请求,因为它不是您的,如果相关的源存储库仍然存在,您可以轻松地创建一个新请求 - 是的,即使它是其他人的。

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

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

答案 5 :(得分:5)

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

之后,只要有人创建了拉取请求,merge按钮就会自动将请求合并到“dev”而不是master。

enter image description here