分支分支合并后会发生什么

时间:2019-08-07 10:29:37

标签: git github

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

假设我在branchA上创建了master,做了一些更改,提交并推送了请求请求。 我很确定该分支将在某个时候合并到origin/master,但是我想在branchB上创建branchA,以便根据提交的更改进行进一步的开发。

branchB将会被合并时,branchA会发生什么?

我的看法是,如果合并请求branchA的合并请求合并,那么我的branchB合并请求将包含来自branchA的提交,而diff将仅显示branchAbranchB

但是,如果尚未合并,则对branchB的拉取请求将显示两个分支的更改,并且由批准者合并branchA然后合并branchB或仅合并{{1} }。

请更正我的推理

2 个答案:

答案 0 :(得分:1)

您遇到这种情况:

                       branch-A
                          v
              1---2---3---4
             /
O---O---O---O
            ^
          master

然后您这样做:

                       branch-A       branch-B
                          v               v
              1---2---3---4---5---6---7---8
             /
O---O---O---O
            ^
          master

总结当前状态:

  • 向主请求A的拉取请求将显示A与主请求之间的区别,即有效提交1-4
  • 向B提交给主服务器的请求将显示B与主服务器之间的差异,实际上是提交1-8,因此包括了A的所有更改(尚未合并到主服务器中)

如果您现在决定完成对A的提取请求,那么您将遇到以下情况:

                       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的拉取请求,那么您最终将获得以下结果:

                       branch-A       branch-B
                          v               v
              1---2---3---4---5---6---7---8
             /                             \
O---O---O---O-------------------------------Y
                                            ^
                                          master

如果您现在重新访问对A的请求请求,则根据工具的不同,您将看到一个空的差异,或者该请求可以被标记为已完成(我想起来,Bitbucket for Enterprise使用此方法),因为所有更改A中的已成功合并。

所以总结一下:

TL; DR :您的B分支并没有真正受到影响,但是它与主分支之间的差异最初还将包括A的所有更改,但是在完成A的PR后,它只会在B和master之间显示差异,并且不再显示来自A的更改,因为它们已被合并。您关于“我的看法”的段落就这样出现了。

答案 1 :(得分:0)

  

我的看法是,如果请求请求批准人合并了branchA,则我的   branchB拉取请求将已经包含来自branchA和   diff将仅显示分支A和分支B之间的变化

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

您始终可以将分支合并到哪个分支。因此,假设首先设置拉取请求以将BranchB合并到BranchA中,以仅查看该差异。如果将BranchA合并为masterB,则可以重新设置BranchB的基础或将master合并为BranchB。