Mat*_*ipp 6 git github github-api pull-request
协作者在 Github 存储库上创建了基于master分支的拉取请求。我想将其合并到我当前正在处理的下一个发布分支 ( 2.0.3) 而不是master分支。正如几个答案所指出的,我可以通过单击拉取请求标题旁边的“编辑”,然后更改基本分支来完成此操作。
但是,当我这样做时,我收到一条警告“旧基础分支的一些提交可能会从时间线中删除”。Github帮助页面还指出,“当您更改拉取请求的基本分支时,某些提交可能会从时间线中删除。”
谁能解释一下这个警告指的是哪个提交,以及它们何时可以被删除?这些提交是在master分支、拉取请求还是新的基础分支 ( 2.0.3) 中?“从时间线中删除”是指 Github 上拉取请求的讨论页面,还是意味着从存储库中删除提交?
更新
正如 @RomainValeri 指出的,此过程不会从存储库中添加或删除任何提交,它只是更改拉取请求中显示的提交,因为其中一些可能不再位于分支的基础和提示之间。然而,尖端仍将与以前相同的最终状态。
就我而言,拉取请求 ( feature) 在我的请求之后分支出来master,如下所示:
A---B---C---D <<< master
\ \
\ E---F <<< feature (pull request)
\
G---H <<< 2.0.3
Run Code Online (Sandbox Code Playgroud)
因此,当我将拉取请求的基础从 更改为 时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
Run Code Online (Sandbox Code Playgroud)
feature然后,当我将to的基数更改为 时2.0.3,它仍然只在拉取请求中显示 E 和 F(I 之外的额外代码),这正是我想要的。
我认为,在之前feature分支的情况下,如果您将 的基础更改为 ,您会看到一些提交从拉取请求中消失(两个分支的原始基础之间的提交,已经在 中)。但存储库中实际上不会丢失任何提交。master2.0.3feature2.0.32.0.3
我不是 github 用户,而是 bitbucket,但是这里工作的 git 概念是相同的,如果我没有记错的话,这就是它的含义:
我们看一下下面的示例情况
A---B---C <<< master
\
D---E---F <<< feature-1
\
G---H <<< feature-2
Run Code Online (Sandbox Code Playgroud)
在这里,feature2 > master拉取请求将具有 4 个提交:D、E和G。H
如果现在您编辑拉取请求以将其作为feature-1基本分支,则更新后的feature-2 > feature-1拉取请求将仅列出G, 和H。
因此,当您刷新拉取请求页面时,D并E 已从拉取请求范围中删除。但是拉取请求不可能从任何地方删除提交,这是一个“附加”操作,它只会创建新数据。
具有讽刺意味的是,这个警告在某种程度上触发了它试图阻止的事情:人们因为突然在列表中看不到自己的提交而感到害怕。Github 想告诉你“你的提交只会从更改列表中删除,而不是从你的存储库中删除。”