6

この形のgitに2つのブランチがあります。

* fffffff commit f
* ddddddd commit d
* bbbbbbb commit b
| * eeeeeee commit e
| * ccccccc commit c
| * aaaaaaa commit a
|/  
* 2222222 base revision 2
* 1111111 base revision 1

rebase --interactiveの場合と同じように、コミットをリベースして並べ替えたいと思います。ただし、いくつかのコミットをインターリーブして、このような形に仕上げたいと思います。

* ffffff2 commit f
* eeeeee2 commit e
* dddddd2 commit d
* cccccc2 commit c
* bbbbbb2 commit b
* aaaaaaa commit a
* 2222222 base revision 2
* 1111111 base revision 1

このリベースを1つのステップで行う方法はありますか?コミットeの上にコミットbをリベースし、次に2番目のインタラクティブなリベースを実行してすべてのコミットをソートすることにより、2つのステップでそれを実行しようとしました。問題は、他の方法では見られない(たとえば、commitbとcommiteの間の)マージ競合が発生し(commitaの後にcommitbを配置することによって)、競合を解決する価値がないことです。

4

1 に答える 1

8

たとえば、任意の1つのブランチ(BranchWithFまたはBranchWithEのいずれか)から開始して、インタラクティブなリベースを発行します。

git checkout BranchWithF
git rebase -i HEAD〜3

エディターとコミットリストが表示されたら、追加(読み取り:キーボードで入力...)してインターリーブします

aaaaaaaを選ぶ
cccccccを選択します
eeeeeeeを選ぶ

あなたが適切と思うようにリストに。

その後、BranchWithFには6つのコミットがすべて含まれ、 BranchWithE(まだ3つのコミットがあります)を破棄できます。

于 2010-12-28T20:17:32.870 に答える