涉及分支的子分支的Git拉取请求

5
假设我有一个存储库的分支,并且我的存储库有三个分支:
- master - branch_1 - branch_1_a
`branch_1` 是基于 `upstream/master` 创建的,但是 `branch_1_a` 基于 `branch_1` 创建的(即通过 `git checkout -b branch_1_a branch_1` 命令创建)
如果我想为 `branch_1` 和 `branch_1_a` 中的更改创建拉取请求,该怎么办?我需要先创建一个将 `branch_1_a` 合并到 `branch_1` 的 PR 吗?还是我应该为 `branch_1` 创建一个 PR,将其合并到 `upstream/master`,然后再为 `branch_1_a` 创建一个 PR?或者我可以同时为每个分支创建一个 PR,以进入 master 分支(虽然我无法理解这将如何工作)?
2个回答

3
首先,git 不了解任何“pull request”(这是像 gitlab、github、bitbucket 等服务的概念)。相反,git 知道合并
一个pull request 只是告诉负责人你想用 git merge 将一个分支与另一个合并的方式。
其次,一个branch 实际上只是你给一组补丁打的标签。
现在回答你的问题:完全可以 合并 分支和子分支。
在最简单的情况下,branch_1_a 包含整个 branch_1 (也就是说,所有在 branch_1 中的提交也在 branch_1_a 中)。
如果你首先 合并 branch_1_a,那么合并 branch_1 就变成不需要操作了(因为你的master已经包含了branch_1)。
如果你首先 合并 branch_1,那么合并branch_1_a将添加使branch_1branch_1_a不同的其他补丁。

虽然这是正确的,但它是一个严格的git观点。合并更改不一定是一个问题,但保持拉取请求干净可能是一个问题。如果您完成了相对于branch_1的branch_1_a拉取请求,则branch_1的拉取请求将包含一个更新,其中包括所有branch_1_a更改,这让我感到不正确,因为现在branch_1的拉取请求比最初预期的要大。 - StoriKnow

0

假设您提到的分叉存在于某些托管的Git服务(如GitHub或Bitbucket)上,您应该能够在分叉的本地克隆中执行将branch_1_a合并到branch_1,然后将branch_1推送到远程分叉存储库,之后您可以为branch_1打开针对您最初从中分叉的存储库的PR。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接