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

时间:2019-06-14 21:52:18

标签: git github github-api

一个合作者已经在一个基于master分支的Github存储库上创建了一个拉取请求。我想将此合并到当前正在使用的下一个发行版分支(2.0.3)中,而不是master分支中。正如几个答案所指出的,我可以通过单击拉取请求标题旁边的“编辑”,然后更改基础分支来实现。

但是,当我这样做时,我会收到一条警告:“某些来自旧基础分支的提交可能会从时间轴中删除。” Github help page还说:“当您更改拉取请求的基础分支时,某些提交可能会从时间轴中删除。”

任何人都可以解释此警告所指的是什么,什么时候可以将其删除?这些提交是在master分支,拉取请求还是在新的基本分支(2.0.3)中? “从时间轴中删除”是否仅指向Github上的请求请求的讨论页面,还是意味着从存储库中删除提交?

更新

正如@RomainValeri指出的那样,此过程不会在存储库中添加或删除任何提交,它只是更改pull请求中显示的提交,因为其中某些提交可能不再位于分支的基础之间和小费。但是,尖端的最终状态仍然与以前相同。

就我而言,拉取请求(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。我在合并请求中不需要C和D,因此我首先将master合并到2.0.3中。这样:

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

然后,当我将feature的基数更改为2.0.3时,它仍然只是在pull请求中显示了E和F(我想要的额外代码),这正是我想要的。

我认为,在featuremaster之前分支2.0.3的情况下,如果将feature的基数更改为{ {1}}(两个分支的原始库之间的提交,它们已经在2.0.3中)。但是实际上不会从存储库中丢失任何提交。

1 个答案:

答案 0 :(得分:1)

我不是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希望告诉您“您的提交只会从更改列表中删除”,而不是从您的回购中删除。

相关问题