Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can two branches be combined into a single branch based on the date of each commit?

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.

like image 897
splicer Avatar asked Mar 23 '11 19:03

splicer


1 Answers

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
like image 179
splicer Avatar answered Nov 09 '22 10:11

splicer