2009-11-20 23 views
21

私はマスターの2つのブランチを持っていますが、それぞれ異なるフィーチャーがあります。そして、2つを組み合わせた合成ブランチを持っています。私は合成ブランチに何かをコミットしましたが、今では、その機能に特有のブランチの1つにその変更を適用したと思います。これを行う方法はありますか?gitを使って別の場所に適用するか適用しますか?gitでは、あるブランチからコミットを削除し、それを別のブランチに適用するにはどうすればよいですか?

答えて

27

チェリーピックはターゲットブランチにコミットし、ソースブランチをリセットします。仮定すると、あなたは、最新のは、targetsourceブランチからコミットを行う移動する:

git checkout target 
git cherry-pick source 
git checkout source 
git reset --hard source^ 

コミットが最後ではなかった場合は、最後のコマンドの代わりにgit rebase -iを使用する必要がありますとのために、特定のコミットの名前を選択しますあなたのcherry-pick私はこのような何かをするとき

+0

ありがとう!よく働く。 – prismofeverything

+6

reset/rebaseは** history rewriting **を行っているので、履歴が公開されていれば使用しないでください。代わりにgit-revertを使う必要があります。 –

2

一般的に、私は以下となります。

  1. は私が変更を削除したいの枝には、この逆のパッチを適用しますgitのdiffを(例えばgit diff HEAD^ HEAD
  2. を用いて逆パッチファイルを作成します。から。
  3. 差分を、私は
  4. 利用git cherry-pick上の変更が適用さは、私はもっと簡単な方法があると信じているが、私は使用して(と覚えている)ので、私はこれを好む

をコミット適用したいですかブランチをチェックアウト/ cherry-pickコマンドの方が良い

+3

手順1 + 2 ==元に戻す – Dustin

関連する問題