あなたがやりたいことは、実際に歴史を書き換えることです。コミットの識別子が変更され、場合によってはコミットによって与えられる変更セットが変更されます。したがって、変更したいブランチの古いバージョンに基づいて誰かが作業を行う可能性がある場合は、これを行わない方がよいでしょう。ただし、このブランチを公開していない場合は、お気軽に。
変更したいブランチの名前が「master」で、新しいブランチを開始したいポイントの名前が「A」であると仮定します (この例では、使用できる名前の 1 つが「master~6」です)。
まず、コミット 'A' から新しいブランチを作成し、'fixes' という名前を付けましょう。
$ git checkout -b fixes A
これにより、ブランチの「修正」も最新になります。チェリーピックを解除したいコミットはわずかしかないため、ブランチの「修正」でそれらをチェリーピックできます。
$ git cherry-pick A1
$ git cherry-pick A2
次に、コミット 'A1' と 'A2' をブランチ 'master' から削除します。削除したいコミットはほんのわずかしかなく、保持したいコミットはさらに多くある可能性があるため、そのために「git rebase --interactive」を使用する必要があります。
$ git rebase -i fixes master
エディターは、コミット 'A' の後に 'master' 内のすべてのコミットで起動されます (これは一般的なコミットです。つまり、ブランチ 'master' とブランチ 'fixes' のベースをマージします)。リストは次のようになります。
pick deadbee B
pick fa1afe1 C
pick a98d4ba A1
...
コミット 'A1' と 'A2' を含む行を削除し、変更を保存し、エディターを閉じます (または変更を intractive rebase に送信します)。git は、削除したものを除くすべてのコミットを再適用します。
次に、で終了できます
$ git merge fixes
(git-rebase は、書き換えられたブランチ 'master' を残しました)。