7

重複の可能性:
コミットの範囲をチェリーピックして別のブランチにマージする方法

あるブランチから19個のコミットを選択して、別のブランチに適用したいと思います。すべてのコミットはシーケンシャルであり(コミット1、コミット2 ...コミット19)、最後のコミットは最新のコミットではありません(つまり、変更を適用したくない他のコミットが後に続きます)。git cherry-pickコミットごとに入力せずに、変更をブランチに適用するにはどうすればよいですか?

4

2 に答える 2

13

git Cherry-pick $ from_sha .. $ to_sha

于 2012-11-16T19:59:27.997 に答える
0

手動で行う方法(チェリーピッキングなし)


コミットが配置されているブランチのヘッドから新しいブランチを作成しますgit branch newB

この新しいブランチを最後のコミットにハードリセットしますgit reset --hard <shaID of Commit19>


方法1

最初のコミットの直前にコミットに対して混合リセットを実行しますgit reset --mixed <shaId of the mentioned commit>

この「変更された」コードを隠して、コミットを1から19にするだけにします。git stash

この手動チェリーピックを適用してポップを実行したい場所に移動git checkout <dstBranch>&&git stash pop


メソッド2(このメソッドはコミットメッセージを保持します)

最初のコミットの直前にコミットをハードリセットしますgit reset --hard <shaId of the mentioned commit>

以前の状態のreflogsと押しつぶされたマージを実行しますgit merge --squash HEAD@{1}

これで、コミット1〜19のインデックスが作成され、コミットを実行すると、コミットメッセージにすべての個々のコミットメッセージが事前入力されます...必要に応じてメッセージを変更できます

コミットが完了したので、チェリーはこの1つのコミットを目的の場所に選択します。これには、必要なすべてのコミットメッセージがあるという利点があります。


完了 したら、一時ブランチを削除して、内部選択を行うために行ったすべてのジャンクを削除しますgit branch -D newB

于 2012-11-16T20:06:39.643 に答える