How can two branches be combined into a single bra

2019-04-10 10:28发布

Let's say I have a git repository that looks like this:

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

To make things simpler, let's say the commits on branchA are strictly modifications to fileA, and the commits on branchB are strictly modifications to fileB.

I want to combine these branches into a third branch, branchAB, where the commits will be ordered by date:

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

Is there a way to automatically do this with a single git command, or am I stuck with manual methods (e.g. cherry picking or rebase -i)?

BTW, merge-base is a tag.

2条回答
等我变得足够好
2楼-- · 2019-04-10 10:40

Here's a solution that does what I want, based on adymitruk's original answer:

git checkout -b branchAB merge-base
git merge branchA
git merge branchB
git rebase --onto merge-base merge-base branchAB
查看更多
混吃等死
3楼-- · 2019-04-10 11:06

This should do it:

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

The rebase will "eat" the merge commit as --preserve-merges was not specified.

hope this helps

查看更多
登录 后发表回答