develop
から分岐したときの最初のことは、2つのフィーチャコミットを元に戻した後で、実際に開発作業を行ったと仮定します。これが当てはまらない場合は、自分の状況を解決するためにいくつかの追加手順を実行する必要がありますが、私の答えはまだ役立つはずです。
おそらく、あなたの問題を概念的に最も簡単な解決策は、単に非復帰がdevelop
に新しいブランチからコミットチェリー選ぶには、次のようになります。
git checkout develop
git cherry-pick B^..D
のハッシュをコミットSHA-1でB
とD
を交換してください新しいブランチからdevelop
に持ち帰りたいとコミットします。別のベースに作業を再適用しているので、これとマージの競合が発生する可能性があることに注意してください。
さらに冒険的な気持ちがある場合は、git rebase --onto
を試してみることもできます。ここにあなたの新しいブランチとdevelop
の現在の状態を示した図である。
develop ... ---A---B---C
\
newbranch R1---R2---D---E
そして、あなたはがこれらR1
とR2
復帰を無視して、develop
の上newbranch
からD
とE
コミットをプレイしたいと思いますコミットします。言い換えれば、あなたはこれで終わるしたい:
develop ... ---A---B---C---D'---E'
\
newbranch R1---R2---D---E
あなたはこれを達成するために、次のコマンドを使用することができます。
git checkout develop
git rebase --onto C R2 E
onto
コマンドは、ベースとしてC
を取り、すべて再生すると言います親がR2
(ただし、R2
自身は含まず)までのコミットE
をコミットします。 C
はHEAD
のdevelop
と一致しているので、GitにD
とE
という順番で、最後にdevelop
の順番で再生を依頼しています。
あなたはGitリポジトリのrebase --onto
の優れた説明をしたい場合は、私はここに@Enricoによって与えられた答えを読むことをお勧めします:
I can't understand the behaviour of git rebase --onto