Git分支在主分支rebase后无法看到更改

3

我进行了主分支的变基,但是我预期发生的事情并没有发生。这可能是我理解上的缺陷,因此让我解释一下我的设置:

我有以下分支:

                                4---O---X
                               /
                          3---O
                         /
                    2---O
                   /
          1---O---O
         /
O---O---N---O---O---O

在第四个分支上进行检查时,我的网站运行着包括主分支在内的所有其他分支所做的每一个更改,直到创建第一个分支(N)的那一点。正如您所见,我在第一个分支之后向主分支添加了一些提交,因此这些提交在最后一个分支(或除主分支以外的任何分支)上不可用。
我想能够在保持当前分支的情况下查看最后一个分支上的其他提交,因此对主分支进行了 rebase 操作,使得第一个分支的末尾指向主分支的末尾,如下所示:
                                            4---O---X
                                           /
                                      3---O
                                     /
                                2---O
                               /
                      1---O---O
                     /
O---O---N---O---O---O

我通过检出第一个分支并执行 rebase master 来实现这个目标。这似乎有效,但我没有在第四个分支中看到更晚的提交(超过N),而是只在第一个分支中看到了它们。
所以我的问题是:为什么重置操作没有按照我的期望工作?如何让超过N点的主分支中的更改显示在我的第4、第3和第2个分支中?
2个回答

3
如果您对分支1进行变基,那么您的新代码树看起来会像这样:

                                4---O---X
                               /
                          3---O
                         /
                    2---O
                   /
          1---O---O
         /          
O---O---N---O---O---O
                     \
                      1'

1'是变基分支1的最新提交。因此,您可以看到,在变基操作中,分支2、3和4没有发生任何变化(这是正确的,因为您只是变基了分支1)。如果您只需要在分支4中获得自主分支的最新更改,则仅需重新设置分支4并将其他3个保留在当前状态即可。


3
在将1基于master重新定位后,您需要执行以下操作:
  • 2基于1重新定位
  • 3基于2重新定位
  • 4基于3重新定位
但是如果这样做让您感到困扰,您可以使用一个发布分支,在该分支中,您可以从想要包含在发布中的所有分支合并。或者,您可以从主分支挑选一些提交到分支-4中,或者将主分支合并到分支-4中。
但是,如果您想要让您的图表看起来像您在问题中展示的那样,您没有其他选择,只能进行4次重新定位操作。
通常,为了更好地了解提交图形的外观,请尝试使用:
$ git log --graph --oneline --all 

或者更好的方法是,尝试使用其中一个git前端

谢谢你。这样做会有很多冲突需要我去解决。你能解释一下为什么我需要这样做吗?我很难想象我的当前分支设置是什么样子,重置每个分支会如何解决它。此外,是否有其他方法可以实现我想要的而不需要重置? - superphonic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接