如何在GitHub上打开多个拉取请求

时间:2011-12-09 18:30:32

标签: git github pull-request

当我在GitHub上打开一个pull请求时,自我上次请求以来的所有提交和所有新提交都会自动添加到此请求中。我似乎无法控制添加哪些提交,哪些不添加。当我尝试打开另一个拉取请求时,我得到一个“哎呀!已经有一个拉取请求”错误。有没有简单的方法可以打开多个拉取请求而不必乱用命令行?

7 个答案:

答案 0 :(得分:100)

拉取请求基于分支。打开多次提交的pull请求的唯一方法是将它们隔离到自己的分支中,然后从那里打开pull请求。

答案 1 :(得分:11)

我发现这样做的最简单方法是使用hub命令(https://github.com/defunkt/hub)。

从您要创建拉取请求的主题分支(此示例中的“功能”)中,您可以运行:

git pull-request

(记得首先推动你的分支!)

它将在GitHub上为“YOUR_USER:feature”打开一个新的拉取请求。

如果您已经在GitHub上创建了一个问题,您甚至可以将拉取请求附加到该现有问题(您无法通过Web UI执行此操作):

$ git pull-request -i 123
[ attached pull request to issue #123 ]

答案 2 :(得分:3)

您可以通过为工作创建单独的分支来创建Pull Request(PR)。

示例:

  1. 您从分支主管结帐到分支工作1。

  2. 您在分支work-1中进行了一些提交,分别是work-1-commit-1和work-1-commit-2

  3. 现在,您从工作1到母版创建PR。 可以通过查看PR更改的文件来检查您的代码。

  4. 现在,要进行进一步的工作,您将从分支工作1检出到新的分支工作2

  5. 您在分支work-2中进行了一些提交,分别是work-2-commit-1和work-2-commit-2

  6. 现在,您从工作2到工作1创建PR。 可以通过查看PR更改的文件来检查您的代码。

此处文件更改将仅包含您之后编写的新代码 work-1-commit-2。

答案 3 :(得分:2)

你实际上可以在不创建另一个分支的情况下做到这一点,但它需要一些游戏 以下是步骤:

  1. 标识要提取的两个提交范围。以下是我将用于举例的内容:
    (其他/主人)A - > B - > C - > D - > E(你的/主人)
    假设您想在一个请求中提取B和C,并且D& E在另一个。
  2. 提出拉取请求。让左侧(“Base”)提交A.对于右侧(“head”),输入C的提交号。
  3. 为第一次请求撰写说明。
  4. 再提出要求。对于base,输入C的提交编号,对于head,输入E(你的/ master)。
  5. 写下说明。
  6. 正如我所看到的,pull请求将commit C视为分支点。或者其他什么。

答案 4 :(得分:1)

最初创建拉取请求时,如果为新的拉取请求打开两个单独的表单,则只要它们指向要合并的不同分支,就可以创建它们。例如,我可以提出两个单独的请求,一个合并到master,另一个合并到test。

答案 5 :(得分:1)

我是Git和GitHub的新手,并且与OP有相同的问题。

我找到了一个解决方案,该解决方案可能在执行OP时尚不可用。

情况:您有3个更改,并且您希望每个更改均基于先前的更改,并且每个更改都有自己的拉取请求(PR)。

问题:创建第一个PR尝试将开发者拉入master时,每件事看起来都很好,但是在对第二个PR进行更改并将其合并(使用同一分支)之后,所有更改都在相同的PR。

迷你解决方案:创建一个新分支

git branch mini_change_2
git checkout mini_change_2

现在您将代码推送到GitHub并创建PR,但是默认情况下是从mini_change_2拉到master,但master尚未从第一个PR进行更改,因此它包括PR1和PR2的所有更改。 / p>

最佳解决方案:指定要在PR2中合并到的分支。

创建第二个PR时不要只接受默认值,例如要将mini_chnage_2拉到Develop,这只会显示mini_change_2中的更改

现在创建一个新分支mini_change_3和PR到mini_change_3。

一旦您开始合并它们,问题就来了……但这是另一回事。

答案 6 :(得分:0)

如果你不跨分叉工作,今天刚发现这个:

  1. 转到您在 GitHub 中的分支
  2. 点击“比较”按钮
  3. 更改要比较的基本分支
  4. 点击“创建拉取请求”
  5. ???
  6. 利润