Как можно объединить две ветви в одну ветку на основе даты каждого коммита? - PullRequest
4 голосов
/ 23 марта 2011

Допустим, у меня есть git-репозиторий, который выглядит так:

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

Чтобы упростить ситуацию, допустим, что коммиты на BranchA являются строго модификациями файла A, а коммиты на BranchB - строго модификациями файла B.

Я хочу объединить эти ветви в третью ветку, branchAB, где коммиты будут упорядочены по дате:

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

Есть ли способ автоматически сделать это с помощью одной команды git, или я застрял с ручными методами (например, выбор вишни или rebase -i)?

Кстати, merge-base - это тег.

Ответы [ 2 ]

6 голосов
/ 24 марта 2011

Вот решение, которое делает то, что я хочу, на основе оригинального ответа adymitruk :

git checkout -b branchAB merge-base
git merge branchA
git merge branchB
git rebase --onto merge-base merge-base branchAB
1 голос
/ 23 марта 2011

Это должно сделать это:

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

Перебазировка «съест» коммит слияния, так как --preserve-merges не был указан.

надеюсь, это поможет

...