在Github中将拉取请求合并到默认的不同分支上
一个拉请求进入我的回购托pipe在Github上。 默认情况下,它被合并到master
分支中。
有没有什么办法可以改变哪个分支的变化会被合并到?
提交者可以改变,当他们发出拉请求,但一旦他们发出,你不能改变它。
另一方面,你可以手动合并他们的分支和推,这是我半定期做错误的拉请求。
您可能会发现hub
有助于处理拉取请求的组件。
那gem包装了手工过程,即:
- 为您的本地结帐添加一个远程叉子。
- 取回那个遥控器。
-
git checkout ${target_branch} && git merge ${remote}/${branch}
-
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一个拉取请求, merge
button将自动将请求合并到“dev”而不是master。