首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当分支分支被合并时会发生什么

当分支分支被合并时会发生什么
EN

Stack Overflow用户
提问于 2019-08-07 10:29:37
回答 2查看 1.4K关注 0票数 5

我有一个问题,我找不到答案在Git专业书。

假设我在master上创建了master,做了一些更改,完成并推动了拉请求。我非常肯定这个分支在某个时候会被合并到origin/master中,但是我希望在提交的变更的基础上创建基于branchAbranchB,以便进一步开发。

问题是,当branchB将被合并时,branchA会发生什么?

我的看法是,如果拉请求批准者合并branchA,那么我的branchB拉请求将包含来自branchA的提交,而diff将有效地显示branchAbranchB之间的更改。

但是,如果尚未合并,则对branchB的拉请求将显示来自两个分支的更改,并由审批者将branchAbranchB合并,或者只合并branchB

请纠正我的推理

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-07 10:57:24

你有过这样的情况:

代码语言:javascript
复制
                       branch-A
                          v
              1---2---3---4
             /
O---O---O---O
            ^
          master

然后你就这么做了:

代码语言:javascript
复制
                       branch-A       branch-B
                          v               v
              1---2---3---4---5---6---7---8
             /
O---O---O---O
            ^
          master

总结一下目前的状况:

  • 对A的拉请求将显示A与Master之间的差异,这实际上是提交1-4
  • 对B的拉请求将显示B与Master之间的差异,这实际上是提交1-8,因此包含了来自A的所有更改,这些更改尚未合并到Master中。

如果您现在决定完成对A的拉请求,则有以下情况:

代码语言:javascript
复制
                       branch-A       branch-B
                          v               v
              1---2---3---4---5---6---7---8
             /             \
O---O---O---O---------------X
                            ^
                          master

其中X现在是合并提交。在此之后,没有任何其他更改或操作,如果您重新访问对B的拉请求,它现在应该(再次,仍然)显示B和master之间的区别,但是现在它只包含提交5-8。

如果您首先完成了对B的拉请求,则最终得到以下结果:

代码语言:javascript
复制
                       branch-A       branch-B
                          v               v
              1---2---3---4---5---6---7---8
             /                             \
O---O---O---O-------------------------------Y
                                            ^
                                          master

如果您现在重新访问对A的拉请求,取决于您将看到的工具,或者看到一个空的diff,或者可以将该拉请求标记为已完成(我似乎还记得Bitbucket for Enterprise使用这种方法),因为A中的所有更改都已经成功地合并了。

因此,总结一下:

TL;DR:您的B分支并没有受到真正的影响,但是它和主人之间的差异最初也将包括来自A的所有更改,但是在完成A的PR之后,它将只显示B和Master之间的差异,而不再显示来自A的更改,因为它们已经被合并了。因此,你关于“我的看法”的一段就是重点。

票数 8
EN

Stack Overflow用户

发布于 2019-08-07 10:36:33

我的看法是,如果拉请求批准者合并branchA,那么我的branchB拉请求将包含来自branchA的提交,而diff将有效地显示branchA和branchB之间的更改。

这取决于如何设置BranchB的拉请求。如果您选择将其合并到master中,而BranchA尚未合并,您将看到所有的更改。但是,您也可以创建拉请求,表示将BranchB合并到BranchA,然后只看到从BranchB到BranchA的更改。

您可以始终更改某个分支将合并到哪个分支。因此,假设首先设置拉请求,将BranchB合并到BranchA中,以便只看到这个差异。如果BranchA被合并为master,则可以将BranchB重基或将主模块合并为BranchB。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57392328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档