我确信以前曾经问过这个问题,但我甚至不确定我要找的是什么条款。
我有一个看起来像这样的分支结构:
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吗?
感谢。
答案 0 :(得分:3)
只要没有其他人使用您的分支机构,Rebase就不是问题。无论是否“远程”都无关紧要。下次推送时,您只需使用--force
。
话虽如此,我想鼓励你重新考虑使用合并。您的历史记录仍会显示功能开发的时间表,但它也会更准确地反映您并行工作的历史记录,以及将其集成到主分支中的历史记录。如果你做了一个rebase,那么当你最初的工作时,你当前的Q
将不同于Q
,如果你不得不去,它可能会像你期望的那样工作回到它。此外,如果出于某种原因需要删除feature1或feature2,它也会更容易。
答案 1 :(得分:0)
为了完成(我同意karl Bielefeldt的answer),使用rebase的解决方案是:
git checkout feature2
git rebase feature1
git checkout master
git rebase --onto feature2 B D
(See here代表git rebase --onto
)