繁体   English   中英

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

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

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

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

任何人都可以解释此警告指的是哪些提交,以及何时可以删除它们? 这些提交是在master分支、pull request 还是新的 base 分支 ( 2.0.3 ) 中? “从时间线中删除”是指 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。但是我不想要 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 ,它仍然只在拉取请求中显示 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 pull request 将包含 4 个提交: DEGH

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM