git:合并功能分支到主线的前面部分

时间:2011-05-10 20:27:33

标签: git merge branch

我确信以前曾经问过这个问题,但我甚至不确定我要找的是什么条款。

我有一个看起来像这样的分支结构:

startoftime -> A -> B -> C -> D (master head)
                    |
                    -> X -> Y (feature1 head)(tag T)
                    |
                    -> Q -> R (feature2 head)

基本上我从提交B创建了两个功能分支,并在其中进行了开发。其中一个人的头上有一个标签,反映了原始根的整体历史。现在我想将它们折叠回主人,但理想情况下我希望它们出现在历史之前主要的新东西上,而不是之后,所以将当前的主头留在原来的位置。理想情况下我喜欢这个:

startoftime -> A -> B -> X -> Y -> Q -> R -> C -> D (master head)
                              |
                            (tag T)

我应该在这里看到哪些概念或命令?

有人建议rebase可能是我在此之后的事。所有这三个分支都已经被推到了我的遥控器上了,虽然我可以保证除了我以外没有人从中拉出来/检查出来。我还可以使用rebase吗?

感谢。

2 个答案:

答案 0 :(得分:3)

只要没有其他人使用您的分支机构,Rebase就不是问题。无论是否“远程”都无关紧要。下次推送时,您只需使用--force

话虽如此,我想鼓励你重新考虑使用合并。您的历史记录仍会显示功能开发的时间表,但它也会更准确地反映您并行工作的历史记录,以及将其集成到主分支中的历史记录。如果你做了一个rebase,那么当你最初的工作时,你当前的Q将不同于Q,如果你不得不去,它可能会像你期望的那样工作回到它。此外,如果出于某种原因需要删除feature1或feature2,它也会更容易。

答案 1 :(得分:0)

为了完成(我同意karl Bielefeldtanswer),使用rebase的解决方案是:

git checkout feature2
git rebase feature1
git checkout master
git rebase --onto feature2 B D

See here代表git rebase --onto