2011-07-08 13 views
41

ブランチから別のブランチにコミットする方法をどうやって適用できますか?私はチェリーを選ぶことができると理解していますが、もう一歩進んで、そのコミットによって導入された変更の一部を「チェリーピック」し、別の(ターゲット)ブランチに適用する必要があります。Git:コミットの一部を別のブランチに適用する

これを行うにはクリーンな方法がありますか、またはコミット全体を適用して手動でいくつかのハンズを元に戻す必要がありますか?将来、より多くのアトミックコミットを作成することを忘れないでください。

+3

[gitでコミットを部分的にチェッカーする]の複製が可能です(http://stackoverflow.com/questions/1526044/partly-cherry-picking-a-commit-with-git) – jweyrich

+1

間違いなく重複しています... – Christoph

答えて

66

git cherry-pick -n <SHA>は変更をステージングしますがコミットしません。 git reset -pを使用して不要なビットを取り消すか、git reset HEADgit add -Apを使用して、必要な変更のみをステージングすることができます。

+0

ありがとう、それは素晴らしい作品! – Abhi

6

適用するパーツをパスで指定することができます(つまり、1つのファイル内にハンクを指定したくない場合)、別の解決策が可能です。

1つの方法は、コミットからパッチを作成してブランチに適用することです。あなたがチェックアウトし、変更したいブランチに

git show <SHA> -- <relevant paths> | git apply 

は、現在の作業コピーへのパスrelevant pathsで、コミットSHAに変更を適用します。

+1

私はこれを試しましたが、すべての行に "パッチは適用されません" –

関連する問題