一个合作者已经在一个基于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(我想要的额外代码),这正是我想要的。
我认为,在feature
在master
之前分支2.0.3
的情况下,如果将feature
的基数更改为{ {1}}(两个分支的原始库之间的提交,它们已经在2.0.3
中)。但是实际上不会从存储库中丢失任何提交。
答案 0 :(得分:1)
我不是github用户,而是bitbucket,但是这里的git概念是相同的,如果我没记错的话,这意味着什么:
让我们看一下下面的示例情况
A---B---C <<< master
\
D---E---F <<< feature-1
\
G---H <<< feature-2
在这里,feature2 > master
的拉取请求将具有4个提交:D
,E
,G
和H
。
如果现在您编辑拉取请求以将feature-1
作为基础分支,则更新的feature-2 > feature-1
的拉取请求将仅列出G
和H
。
因此,当您刷新拉取请求页面时,D
和E
已从拉取请求范围中删除。但是,拉取请求无法从任何地方删除提交,这是一个“附加”操作,只会创建新数据。
具有讽刺意味的是,该警告以某种方式触发了它试图防止的事情:人们因为突然不再在列表中看到它们而对丢失的提交感到迷惑不解。 Github希望告诉您“您的提交只会从更改列表中删除”,而不是从您的回购中删除。