一个拉请求进入我的回购托管在 Github。默认情况下,它是合并到 master分支。
master
有什么办法可以让我更改这些更改将合并到哪个分支中吗?
提交者可以在他们发出请求时改变这一点,但是一旦他们发出请求,你就不能改变它了。
另一方面,您可以手动合并它们的分支和 push,对于目标错误的 pull 请求,我会半定期地这样做。
您可能会发现 hub宝石在处理拉请求的组件时很有帮助。
hub
这个 gem 包含了手动过程,即:
git checkout ${target_branch} && git merge ${remote}/${branch}
git push origin ...
Daniel Pittman 的解决方案没有错,但是我认为这些合并是“没有快进”的,也就是说,把第三步改为:
git checkout ${target_branch} && git merge --no-ff ${remote}/${branch}
通过使用 --no-ff,历史将更容易阅读。它将清楚地说明 $n提交来自 $branch,并且如果您需要恢复在该分支中完成的某些操作,它也将使您的生活变得更容易。
--no-ff
$n
$branch
为了回答 einoc 的问题并给出一个额外的提示:
完成合并后,git cli 将提示您编写消息,通常会显示一个通用消息,内容如下
将远程跟踪分支‘ user/their-Branch’合并到 your-Branch 中
确保编辑该消息并包含对请求号的引用,即: (假设请求号是123)
将远程跟踪分支‘ user/their-Branch’合并到 your-Branch 中 参考文献 # 123解决了..。
参考文献 # 123解决了..。
因此,当您下次访问 github 问题/pull-request 页面并检查特定的 pull 请求时,您将看到您的消息带有一个链接,以提交您进行合并的位置。
下面是我的意思的截图。
使用其他答案中提到的 hub gem 的另一种方法是使用 使用命令行合并本地请求,它允许您这样做:
$ 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/*
它的作用是允许您下载 全部 pull 请求。由于这可能不是大规模回购所需要的,GitHub 修改了指令,使其具有 git fetch origin pull/ID/head:BRANCHNAME语法的特性,从而避免了对配置文件的修改,并且只下载那个单一的拉请求。
git fetch origin pull/ID/head:BRANCHNAME
尽管您不能更改现有的 pull 请求,因为它不是您的,但是如果相关的源存储库仍然存在,您可以轻松地创建一个新请求——是的,即使它是其他人的。
转到提交者的存储库,然后使用相同的提交在他/她的存储库中创建一个新的 pull 请求,但是要确保正确设置了正确的目标分支。
然后返回到您自己的存储库并接受新的 pull 请求!
要进入存储库的主页,请单击分支,并将默认分支从 master 更改为其他内容,在我的示例中为“ dev”。
之后,每当有人创建一个拉请求时,merge按钮将自动将请求合并到“ dev”而不是 master 中。
merge
截至2016年8月15日,GitHub 允许通过 GUI 更改请求的目标分支。单击标题旁边的 Edit,然后从下拉列表中选择分支。
Edit
您现在可以更改打开请求的基本分支。在创建了一个拉请求之后,您可以修改基本分支,以便将拉请求中的更改与另一个分支进行比较。通过更改原始 pull 请求的基本分支,而不是使用正确的基本分支打开新的基本分支,您将能够保持有价值的工作和讨论。