在 Github 上更改拉取请求的基本分支时将删除哪些提交?

What commits will be removed when changing the base branch of a pull request on Github?

一位协作者在 Github 存储库上创建了拉取请求,该存储库基于 master 分支。我想将其合并到我当前正在处理的下一个发布分支 (2.0.3) 而不是 master 分支。正如几个答案所指出的,我可以通过单击拉取请求标题旁边的 'Edit' 然后更改基本分支来完成此操作。

但是,当我这样做时,我收到警告 "Some commits from the old base branch may be removed from the timeline." Github help page 还说 "When you change the base branch of your pull request, some commits may be removed from the timeline."

谁能解释这个警告指的是哪个提交,以及何时可以删除它们?这些提交是在 master 分支、拉取请求还是新的基础分支 (2.0.3) 中? "removed from the timeline" 是指 Github 上拉取请求的讨论页面,还是意味着从存储库中删除提交?

更新

正如@RomainValeri 指出的那样,这个过程不会在存储库中添加或删除任何提交,它只是更改拉取请求中显示的提交,因为其中一些可能不再落在树枝和尖端。但是,提示仍将是与之前相同的最终状态。

就我而言,拉取请求 (feature) 在我提出请求后分支 master,如下所示:

A---B---C---D <<< master
     \       \
      \       E---F <<< feature (pull request)
       \
        G---H <<< 2.0.3

因此,当我将拉取请求的基础从 master 更改为 2.0.3 时,它现在报告拉取请求包括提交 C、D、E 和 F,而不仅仅是 E 和 F .不过我不想pull request中的C和D,所以我先把master合并成2.0.3。这给了这个:

A---B---C---D ---<<< master
     \       \    \
      \       \    E---F <<< feature (pull request)
       \       \
        G---H---I <<< 2.0.3

然后当我把feature的base改成2.0.3的时候,pull request中还是只显示了E和F(I之外的额外代码),这就是我想要的。

我认为在 feature2.0.3 之前分支 master 的情况下,如果您更改 feature 的基础,您会看到一些提交从拉取请求中消失到 2.0.3(两个分支的原始基础之间的提交,它们已经在 2.0.3 中)。但是实际上不会从存储库中丢失任何提交。

我不是 github 用户,而是 bitbucket,但是 git 这里工作的概念是相同的,如果我没记错的话,这就是它的意思:

让我们看看下面的示例情况

A---B---C <<< master
     \
      D---E---F <<< feature-1
           \
            G---H <<< feature-2

在这里,一个 feature2 > master 拉取请求将包含 4 个提交:DEGH.

如果现在编辑拉取请求以将 feature-1 作为基本分支,则更新后的 feature-2 > feature-1 拉取请求将仅列出 GH

因此,当您刷新拉取请求页面时,DE 已从拉取请求范围中删除 。但是拉取请求不可能从任何地方删除提交,这是一个“附加”操作,它只会创建新数据。

具有讽刺意味的是,该警告以某种方式触发了它试图阻止的事情:人们因为突然在列表中再也看不到他们而失去了他们的提交而感到害怕。 Github 想告诉您“您的提交只会从更改列表中删除,而不会从您的存储库中删除。”