git cherry-pickとは?
git cherry-pickとは、特定のコミットだけを選んで、別のブランチに取り込むことができる便利なコマンドです。
主に以下の場面でよく利用されます。
- 特定ブランチから一部の変更だけを反映したいとき
- 修正・バグフィックスを他ブランチに素早く取り入れたいとき
- 開発途中で一部コミットを別ブランチに適用したいとき
git cherry-pick基本構文
git cherry-pickの基本構文は以下の通りです。
git cherry-pick [コミットハッシュ]
具体例:
git cherry-pick abc1234
これで指定したコミットの内容を現在作業中のブランチに適用できます。
cherry-pickの手順と流れ
git cherry-pickを使用する一般的な手順と流れは以下の通りです。
- コミットのハッシュ値を確認(
git log
などで確認) - コミットを取り込みたいブランチにチェックアウト
- git cherry-pickコマンドを実行
具体例:
git checkout develop
git cherry-pick abc1234
この流れで、指定したコミットを簡単に反映できます。
複数コミットの反映方法
複数のコミットを一度にまとめてcherry-pickしたい場合は、コミット範囲を指定します。
基本構文:
git cherry-pick [開始コミット]..[終了コミット]
具体例:
git cherry-pick abc1234..def5678
これにより、abc1234の次のコミットからdef5678までのコミットを順番に反映できます。
競合発生時の対処法
cherry-pickを実行すると、ファイル競合(コンフリクト)が発生する場合があります。
競合が発生した場合の対処手順:
- 競合箇所を手動で編集し解決
- 変更をステージング(
git add
) - cherry-pickを完了させる(
git cherry-pick --continue
)
具体例:
# 競合部分を手動で修正後
git add [ファイル名]
git cherry-pick --continue
競合を解決したくない場合は、git cherry-pick --abort
で取り消しましょう。
cherry-pickの取消方法
cherry-pickを途中でやめたい場合は、以下のコマンドで取り消せます。
git cherry-pick --abort
また、すでに反映済みのcherry-pickを取り消したい場合は、以下のコマンドを実行します。
git reset --hard HEAD^
※ただし、resetを使うとコミットが完全に消えるため注意しましょう。
revertとの違いを解説
git cherry-pickと似た機能にgit revertがありますが、それぞれの役割は異なります。
- git cherry-pick
特定のコミットを他ブランチに反映(追加)します。 - git revert
既にコミットされた変更を打ち消す新しいコミットを作成します。
用途を明確に理解して使い分けましょう。
cherry-pick使用時の注意点
git cherry-pickを使う際は、以下の点に注意しましょう。
- cherry-pickは新しいコミットが作成されるため、コミットハッシュ値が元のコミットと変わります。
- 頻繁にcherry-pickを使用するとブランチ間の差分管理が難しくなるため、使用は必要最低限に抑えましょう。
- cherry-pickの競合解決は慎重に行い、反映後は必ず動作確認を行いましょう。
cherry-pick便利コマンド集
よく使われるcherry-pickの便利なコマンドをまとめました。
- コミットを1つ反映
git cherry-pick abc1234
- 複数コミットをまとめて反映
git cherry-pick abc1234..def5678
- 競合を解決後にcherry-pickを継続
git cherry-pick --continue
- cherry-pickを中断・キャンセル
git cherry-pick --abort
うまく活用して作業効率を上げましょう。
cherry-pickコマンド早見表
最後にgit cherry-pickのコマンド早見表をまとめました。
操作内容 | コマンド |
---|---|
コミットを1つ反映 | git cherry-pick コミットハッシュ |
複数コミットをまとめて反映 | git cherry-pick ハッシュ1..ハッシュ2 |
競合の解決後に継続 | git cherry-pick --continue |
cherry-pickを取り消す | git cherry-pick --abort |
直前コミットを取り消す | git reset --hard HEAD^ |
git cherry-pickを使いこなして、開発作業をさらにスムーズに進めましょう。