これは簡単な質問と回答であると確信していますが、どの用語を検索すればよいかわかりません。私はこれを持っています:
/--master--X--Y
A--B
\--C--D--E
ブランチでC、D、およびE(ローカルのみ)をコミットしたところ、DとEは実際にはCから独立していることに気付きました。Cを独自のブランチに移動し、後で使用できるようにDとEを保持したいと思います。つまり、私はこれが欲しいです:
/--C
/--master--X--Y
A--B
\--D--E
DとEの下からCをヤンクするにはどうすればよいですか?
git cherry-pick
を使用してCを取得し、それをYに配置できます。Yがチップとして存在すると仮定すると、branch-Y
というブランチがあります。
$ git checkout branch-Y
$ git cherry-pick C
したがって、CはYの上にあります。ただし、DとEにはまだCが含まれています(チェリーピッキングはコミットを移動せず、コピーを作成するだけです)。 DとEをBの上にリベースする必要があります。Eがbranch-E
の先端であり、Bがbranch-B
であるとすると、次のことができます。
$ git checkout branch-E
$ git rebase --interactive branch-B
これにより、インタラクティブなリベースセッションが開きます。コミットCを完全に削除し、DとEはそのままにしておきます。次に、CなしでBの上にDとEをリベースします。