将2个分支合并为单个分支

时间:2013-12-11 10:06:05

标签: git merge branch git-filter-branch git-rewrite-history

在GIT中我在单个存储库中有两个分支 - 分支“A”和分支“B”(从旧SVN存储库中的两个文件夹创建)

这些分支是完全分开的:它们没有共同的祖先。

这些分支中的每一个都写入不同的目录。 例如:分支A仅写入目录“〜/ A”,分支B仅写入目录“〜/ B”(因此没有冲突)。

我想将这两个分支合并为单个分支,因此它看起来像单个分支库。

我试过了:

  • git merge - 它将合并分支,但在历史记录中有两个分支可见
  • git rebase - 它工作但是提交的顺序错误 - 我希望按时间顺序提交

执行此操作的最佳方法是从两个分支进行所有更改,按时间排序并在一些新分支上逐个“重放”。但我不知道该怎么做。

感谢您的回答!

编辑: 这就是它现在的样子(按时间从左到右):

Branch [A]:          A1----A2-------A3----A4-A5
Branch [B]:       B1----B2----B3-B4----B5

When using merge: 
                     A1----A2-------A3----A4-A5-\
                  B1----B2----B3-B4----B5--------\

When using rebase:
                     A1----A2-------A3----A4-A5-B1-B2-B3-B4-B5

What I need:
                  B1-A1-B2-A2-B3-B4-A3-B5-A4-A5 

1 个答案:

答案 0 :(得分:2)

您可以使用interactive rebase将提交重新排序为所需的顺序。

交互式rebase允许您在文本文件中重新排序更改,我建议您编写一个bash脚本,按照您需要的时间顺序准备一份提交列表,例如:

pick b111111 B1
pick a111111 A1
pick a222222 B2
pick a222222 A2
pick b333333 B3
pick a333333 A3

...然后在交互式rebase中使用