162

当我在GitHub 上打开拉取请求时。 自我上次请求以来的所有提交和所有新提交都会自动添加到此请求中。

我似乎无法控制添加了哪些提交,哪些没有。
当我尝试打开另一个拉取请求时,我收到“糟糕!已经有拉取请求”错误。

有什么简单的方法可以打开多个拉取请求,而不必乱用命令行?

4

8 回答 8

132

拉取请求基于分支。
为多个提交打开拉取请求的唯一方法是:

  1. 将它们隔离成自己的分支
  2. 从那里打开拉取请求。
于 2011-12-09T19:15:11.030 回答
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 ]
于 2012-04-26T22:28:01.010 回答
9

您可以通过为您的工作创建单独的分支来创建拉取请求(PR)。

例子:

  1. 您从分支 master 结帐到分支 work-1。

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

  3. 现在你创建了一个从 work-1 到 master 的 PR。可以通过查看从 PR 更改的文件来查看您的代码。

  4. 现在,为了进一步的工作,您将从分支 work-1 结帐到新的分支 work-2

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

  6. 现在您创建了一个从 work-2 到 work-1 的 PR。可以通过查看从 PR 更改的文件来查看您的代码。

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

于 2020-08-06T12:05:29.220 回答
2

您实际上可以在不创建另一个分支的情况下执行此操作,但需要一些时间。
以下是步骤:

  1. 确定要提取的两个提交范围。这是我将使用的示例:(
    其他/主)A -> B -> C -> D -> E(您
    的/主)假设您想在一个请求中拉 B 和 C,并且 D & E在另一个。
  2. 发出拉取请求。将左侧(“Base”)作为提交 A。对于右侧(“head”),输入 C 的提交编号。
  3. 写下您的第一个请求的描述。
  4. 提出另一个请求。对于基础,输入 C 的提交号,对于头部,输入 E(你的/主人)。
  5. 写下描述。

如我所见,拉取请求将提交 C 视为分支点。或者其他的东西。

于 2012-03-23T17:08:02.043 回答
1

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

于 2020-02-07T16:54:24.467 回答
1

我是 Git 和 GitHub 的新手,和 OP 有同样的问题。

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

情况:您有 3 个更改,并且您希望每个更改都建立在以前的基础上,并且每个更改都有自己的拉取请求 (PR)。

问题:当您创建第一个 PR 尝试将 develop 拉入 master 时,一切看起来都很好,但是在您对第二个 PR 进行更改并合并它们(使用相同的分支)之后,所有更改都在同一个 PR 中.

小解决方案:新建一个分支

git branch mini_change_2
git checkout mini_change_2

现在你将代码推送到 GitHub 并创建 PR,但它默认从 mini_change_2 拉到 master,除了 master 还没有第一个 PR 的更改,因此它包含 PR1 和 PR2 的所有更改。

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

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

现在创建一个新分支 mini_change_3 并将其 PR 到 mini_change_3。

一旦你开始合并它们,问题就会出现......但这是一个不同的练习。

于 2020-02-13T22:35:39.070 回答
0

如果您转到存储库页面,单击 Pull Requests,有一个“New pull request”按钮,您可以使用它在任意两个分支之间创建 pull request。

这对于必须合并到主分支和开发分支的修补程序非常有用(在不同的时间,取决于您如何部署系统)

于 2021-11-29T20:35:08.590 回答
0

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

  1. 转到您在 GitHub 中的分支
  2. 点击“比较”按钮
  3. 更改要比较的基础分支
  4. 点击“创建拉取请求”
  5. ???
  6. 利润
于 2021-01-28T20:57:49.713 回答