git - 将2个分支 merge 为一个分支

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

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

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

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

我想将这两个分支 merge 为一个分支,这样它看起来就像一个分支存储库。

我试过:

  • git merge - 它将 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 

最佳答案

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

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

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

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

关于git - 将2个分支 merge 为一个分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20516142/

相关文章:

android - 如何下载适用于安卓的谷歌源代码

Git错误: fatal: bad numeric config value 'falseexit' for 'core.trustctime' : invalid unit

scala - 玩json库和sbt assembly合并报错

git - git 中的标签与分支

git - 在 post-receive Hook 内执行推送到 github

Git - 从 Master 中分离出一段代码并使其成为一个分支

python - 当包含 NaN 时使用 "new information"更新 Pandas 数据帧

mysql - 如何将两个查询结果显示为一个

git - 标签和分支 merge

assembly - 可以使用哪些方法/技术来减少汇编代码中的分支数量?