我对我的主分支做了一些改变,但我期待的事情并没有发生。这可能是我理解中的一个空白,所以让我解释一下我的设置:
我有以下分支:
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分支中。
答案 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保持在当前状态就足够了。