如何在接受之前将第二个拉取请求堆叠在现有的拉取请求之上?

Tho*_*ker 8 git github

我想向repo所有者提供两个不同的pull请求,第二个基于第一个.

我在repo上有一个现有的pull请求(我不拥有).

我希望对现有的pull请求进行进一步的更改.

master -> A -> B
Run Code Online (Sandbox Code Playgroud)

我根据我用于A的分支在我的分支中的分支上进行了B中的更改.

git branch -b B A
Run Code Online (Sandbox Code Playgroud)

我已向上游推进:

git push --set-upstream origin B
Run Code Online (Sandbox Code Playgroud)

当我尝试通过github UI为B创建拉取请求时,它会在单个拉取请求中向我提供A +中B的更改.

如果我从命令行尝试这个:

hub pull-request -b A
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为A不是上游仓库中的分支,只在我的fork中.

为了向回购所有者提供两个拉取请求,一个堆叠在另一个上,我应该做些什么呢?

Von*_*onC 5

在一个拉取请求中堆叠大量更改可以吗?

如果您的第二个更改绝对取决于第一个更改,那么...是的。

话虽如此,您应该首先解决 PR​​ A,这意味着原始存储库的维护者应该评估、接受并合并您的第一个 PR。

同时,您可以基于 A 为 B 创建一个新分支,并将该分支推送到您的分支,但在第一个分支得到解决之前,您不应该创建新的 PR。
特别是如果第一个 PR 被拒绝。

在OP的情况下:

我最终将所有堆积的更改视为一个拉取请求,如果他们想要明智地进行审查,他们可以一一点击进入每个提交

当所有这些变化都可以被视为一项重大的新演变时,这是有道理的。
最佳实践建议进行小的增量更改,但在这种情况下,添加对现有 PR 的提交(因为实际上无法“堆叠 PR”)是推进开发过程的方法。


Tho*_*ker 1

在某个时候,GitHub 引入了更改 PR 基础分支的功能。因此,要实现这一目标,您可以基于master(默认)创建第一个 PR,并为第二个 PR 选择分支A作为基础。

更改 GitHub PR 的基础分支的屏幕截图