44

これは簡単な質問と回答であると確信していますが、どの用語を検索すればよいかわかりません。私はこれを持っています:

    /--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をヤンクするにはどうすればよいですか?

4

1 に答える 1

63

を使用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 をリベースします。

于 2010-09-14T15:24:47.863 に答える