ソースコードをマージするために、方法が多いです。こちらは普通がmerge、rebaseで利用していますが、もう一つ方法を紹介したいと思います。
仮にmasterやdevはブランチがある。今回、devのコミットからmasterブランチにマージしていきます。
既にmasterブランチのコミット
devブランチを作成する前
commit●
devブランチを作成する後
commit❺
既にdevブランチのコミット
commit❶
commit❷
commit❸
commit❹
● 一つコミットをcherry-pickしたい
git cherry-pick {コミットID}
● 複数の連続したコミットをcherry-pickしたい
git cherry-pick {始点となるコミットの1つ前のコミットハッシュ}..{終点となるコミットハッシュ}
例1:
・masterブランチにcommit❶をcherry-pickしたい場合
・git cherry-pick commit❶
・コンフリクトが発生する場合
➀ コンフリクトを修正
➁ 修正したファイルはgit add <paths> または git rm <paths>
➂ git commit
・コンフリクトを対応した後、cherry-pickを終わりのコマンドを実行していきます
git cherry-pick --quit
結果、masterブランチのコミットは
commit●
commit❺
commit❶
です。
例2:
・masterブランチにcommit❶〜commit❹をcherry-pickしたい場合
commit❶もマージしたい場合は、commit❶の1つ前のコミットハッシュからcherry-pickする必要です。今回のコミットはcommit●です。そのため、下記のコマンドがある。
・git cherry-pick commit●..commit❹
コンフリクトが発生すると、例1と同じで対応します。
違い点のは複数コンフリクトがある場合は、次のコミットをcherry-pickするために、
下記ののコマンドを実行します
・git cherry-pick --continue
結果は
commit●
commit❺
commit❶
commit❷
commit❸
commit❹
です。
そして、途中でcherry-pickを辞めたいなら、下記のコマンドです。
git cherry-pick --abort
以上です。