5

次のようなgitリポジトリがあるとしましょう。

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

簡単にするために、branchAでのコミットはfileAへの厳密な変更であり、branchBでのコミットはfileBへの厳密な変更であるとしましょう。

これらのブランチを3番目のブランチbranchABに結合したいと思います。ここで、コミットは日付順に並べられます。

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

単一のgitコマンドでこれを自動的に行う方法はありますか、それとも手動の方法(たとえば、チェリーピッキングやリベース-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が指定されていないため、リベースはマージコミットを「食べる」でしょう。

お役に立てれば

于 2011-03-23T20:13:51.350 に答える