[英]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 的额外代码),这正是我想要的。
我认为如果feature
在2.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 个提交: D
、 E
、 G
和H
。
如果现在您编辑拉取请求以将feature-1
作为基本分支,则更新后的feature-2 > feature-1
拉取请求将仅列出G
和H
。
因此,当您刷新拉取请求页面时, D
和E
已从拉取请求范围中删除。 但是拉取请求不可能从任何地方删除提交,这是一个“附加”操作,它只会创建新数据。
具有讽刺意味的是,该警告以某种方式触发了它试图阻止的事情:人们因丢失提交而惊慌失措,因为他们突然在列表中不再看到它们。 Github 想告诉你“你的提交只会从更改列表中删除,而不是从你的仓库中删除。”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.