gitで別ブランチの特定コミットを別のブランチに対して適用する(git cherry-pick)

● gitで別ブランチの特定コミットを別のブランチに対して適用する

git cherry-pick を使用します

git cherry-pick [取り込むコミットID]

範囲を指定して連続した複数のコミットを取り込む

範囲を指定して連続したコミットを取り込むには、以下のコマンドを使用します。

git cherry-pick <開始コミットID>^..<終了コミットID>

左側が古いコミット、右側が新しいコミットです。
また左側には最後 ^ をつけると、開始コミットID 自身も取り込まれます。つけない場合はその次のコミットから取り込まれます。

例: a1b2c3dのコミットからd4e5f6gまでを取り込む

git cherry-pick a1b2c3d^..d4e5f6g

非連続の複数のコミットを取り込みたい場合は、以下のようにそれぞれのコミットIDをスペースで区切って指定します。

git cherry-pick <コミットID1> <コミットID2> <コミットID3>

● git cherry-pick でコンフリクトが起きた場合の対応

かなりの確率でコンフリクトは起こると考えておいた方が良いのでその対応を知っておきましょう。 コンフリクトが起きると次のようなログ出力となります

Auto-merging local/resources/xxxx.cs
Auto-merging local/resources/bbbb.cs
CONFLICT (content): Merge conflict in local/app/Http/Requests/cccc.cs
CONFLICT (content): Merge conflict in local/app/Http/Controllers/dddd.cs

CONFLICT (content) となっているファイルを修正、保存します。

その後に修正したファイルを追加してコミットします。

git add local/app/Http/Requests/cccc.cs
git add local/app/Http/Controllers/dddd.cs

コミットします。コメントの先頭に [cherry-pick] → をつけてわかりやすいようにします。(書き方はなんでもokです)

git commit -m "[cherry-pick] → [fix] ○○○の不具合を修正"

とします

No.2049
05/29 11:11

edit