Git分支在主人的rebase之后看不到变化

时间:2014-09-11 10:43:39

标签: git rebase

我对我的主分支做了一些改变,但我期待的事情并没有发生。这可能是我理解中的一个空白,所以让我解释一下我的设置:

我有以下分支:

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

当在第4个分支上签出时,我的网站正在运行我在所有其他分支中所做的每一次更改,包括主分支直到创建第一个分支的点(N)。正如您所看到的,我在第一个分支之后向master分支添加了一些提交,因此在最后一个分支(或除master之外的任何分支)时这些提交都不可用。

我希望能够看到最后一个分支上的其他提交,保留当前的分支,所以做了一个master的rebase,所以第一个分支的尖端将指向master分支的末尾,就像这样:

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

我通过检查第一个分支并执行rebase master来完成此操作。这似乎有效,但我没有看到后来提交的主人(过去的N),在第4分支。这就是我认为会发生的事情。我只在第一个分支看到它们。

所以我的问题是为什么没有像我预期的那样使用rebase?以及如何在主要的N点之后进行更改以显示在我的第4,第3和第2分支中。

2 个答案:

答案 0 :(得分:3)

1重新定位到master后,您必须:

  • 2变为1
  • 3变为2
  • 4变为3

但是,由于它会给您带来麻烦,或者您可以使用发布分支,您可以在其中合并您要在发布中包含的所有分支。 或者,你可以从主人那里挑选到分支-4。或者你可以从master合并到branch-4。

但我担心,如果你希望你的图表看起来像你在问题中显示的图形,那么除了4个rebase操作之外别无选择。

通常,为了更好地理解提交图的外观,请尝试使用:

$ git log --graph --oneline --all 

或者更好,请尝试其中一个git front-ends

答案 1 :(得分:3)

如果你只修改分支1,你的新树看起来像这样:

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

1'是重新分支的分支1.正如您所看到的,分支2,3和4没有随着rebase操作而改变(这是正确的,因为您刚刚重新分支了分支1)。如果你只需要分支4中master的最新更改,那么仅仅修改分支4并将其他3保持在当前状态就足够了。