5

假设我有一个如下所示的 git 存储库:

merge-base---A1--A2------A3------A4 (branchA)
          \
           ----------B1------B2 (branchB)

为了简单起见,假设branchA 上的提交是对fileA 的严格修改,而branchB 上的提交是对fileB 的严格修改。

我想将这些分支合并到第三个分支 branchAB 中,其中提交将按日期排序:

merge-base---A1--A2------A3------A4 (branchA)
          \
           ----------B1------B2 (branchB)
            \
             A1--A2--B1--A3--B2--A4 (branchAB)

有没有办法使用单个 git 命令自动执行此操作,还是我坚持使用手动方法(例如樱桃采摘或 rebase -i)?

顺便说一句,merge-base是一个标签。

4

2 回答 2

9

根据adymitruk 的原始答案,这是我想要的解决方案:

git checkout -b branchAB merge-base
git merge branchA
git merge branchB
git rebase --onto merge-base merge-base branchAB
于 2011-03-23T22:19:39.187 回答
1

这应该这样做:

git branch branchAB branchA
git checkout branchB
git merge branchA
git rebase --onto A1^ B1^ branchAB

由于未指定 --preserve-merges,rebase 将“吃掉”合并提交。

希望这可以帮助

于 2011-03-23T20:13:51.350 回答