有一个拉取请求进入我的托管在Github上的repo。默认情况下,它会合并到 master
分支中。
是否有任何方法让我更改将更改合并到哪个分支中?
有一个拉取请求进入我的托管在Github上的repo。默认情况下,它会合并到 master
分支中。
是否有任何方法让我更改将更改合并到哪个分支中?
截至2016年8月15日,GitHub允许通过GUI更改拉取请求的目标分支。单击标题旁边的编辑
,然后从下拉菜单中选择分支。
提交者可以在发起拉取请求时更改它,但一旦他们发起请求,您就无法更改它。
另一方面,您可以手动合并他们的分支和推送,这是我经常为错误定位的拉取请求所做的。
您可能会发现hub
gem有助于处理拉取请求的组件。
该gem封装了手动过程,步骤如下:
git checkout ${target_branch} && git merge ${remote}/${branch}
git push origin ...
git merge --no-ff ...
,正如@GuillermoMansilla在他的回答中提到的那样。 - jjmontes除了其他答案提到的使用hub 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/*
git fetch origin pull/ID/head:BRANCHNAME
语法,它避免了修改配置文件并仅下载单个拉取请求。尽管你无法更改现有的拉取请求,因为它不是你的,但是如果相关的源存储库仍然存在(即使它是其他人的),你可以轻松地创建一个新的拉取请求。
前往提交者的存储库,然后在他/她的存储库中创建一个新的拉取请求,使用相同的提交,但确保正确设置目标分支。
然后返回到你自己的存储库并接受新的拉取请求。完美!
丹尼尔·皮特曼的解决方案没有问题,但我会将这些合并视为“无快进”,即更改步骤3为:
git checkout ${target_branch} && git merge --no-ff ${remote}/${branch}
--no-ff
,历史记录将更易于阅读。它将清楚地说明$n
次提交来自$branch
,如果您需要撤消该分支中所做的某些操作,它也会使您的生活更轻松。确保编辑该消息并包含对拉取请求编号的引用。即:Merge remote-tracking branch 'user/their-branch' into your-branch
因此,下次访问您的github问题/拉取请求页面并检查特定的拉取请求时,您将看到带有指向您执行合并的提交链接的消息。Merge remote-tracking branch 'user/their-branch' into your-branch
refs #123 solving whatever...
要实现这个目标,请进入您的仓库主页,单击分支,将默认分支从master更改为其他内容,在我的情况下是"dev"。
之后,每当有人创建pull request时,merge
按钮将自动将请求合并到"dev"而不是master中。