git cherry-pick – 特定のコミットを別のブランチに適用するコマンド

リポジトリ管理

git cherry-pick は、指定したコミットを現在のブランチに取り込む コマンドです。
マージ全体ではなく「特定の修正だけ」を別のブランチに反映したいときに使います。
例えば、main でバグ修正したコミットを release ブランチにも適用する場合などに便利です。

構文(Syntax)

git cherry-pick [オプション] <コミットハッシュ>...

主なオプション一覧

オプション説明使用例
-n / --no-commit変更を適用するがコミットは作らないgit cherry-pick -n a1b2c3d
-e / --editコミットメッセージを編集してコミットgit cherry-pick -e a1b2c3d
-x元コミットのハッシュをメッセージに追記git cherry-pick -x a1b2c3d
-sSigned-off-by 行を追加git cherry-pick -s a1b2c3d
--continueコンフリクト解消後に処理を続行git cherry-pick --continue
--abortコンフリクト発生時に処理を中止git cherry-pick --abort
--quitコンフリクト中の状態を残したまま終了git cherry-pick --quit
<hash1>..<hash2>範囲指定で複数コミットを適用(hash1除く, hash2含む)git cherry-pick a1b2c3d..d4e5f6g
<hash1>^..<hash2>範囲指定で開始コミットも含めるgit cherry-pick a1b2c3d^..d4e5f6g

実行例

単一コミットを適用

git checkout feature-branch
git cherry-pick a1b2c3d

a1b2c3d の変更を feature-branch にコピー)

複数コミットをまとめて適用

git cherry-pick a1b2c3d d4e5f6g

コミット範囲を適用

git cherry-pick a1b2c3d..d4e5f6g

a1b2c3d の次から d4e5f6g までのコミットを適用)

コミットメッセージを編集して適用

git cherry-pick -e a1b2c3d

元コミットを明記して適用

git cherry-pick -x a1b2c3d

コミットメッセージに以下が追加される:

(cherry picked from commit a1b2c3d...)

コンフリクトが発生した場合

git cherry-pick a1b2c3d
# コンフリクトが発生したら修正
git add 修正ファイル
git cherry-pick --continue

中止したい場合

git cherry-pick --abort

エラー例(存在しないハッシュ指定)

git cherry-pick deadbeef

出力例:

fatal: bad revision 'deadbeef'

関連コマンド

  • git merge : ブランチ全体を統合
  • git rebase -i : コミットの再配置・整理
  • git revert : 過去のコミットを打ち消す新しいコミットを作成

備考

  • git cherry-pick履歴をコピーするコマンド であり、マージとは異なり元のブランチの履歴をそのまま持ってくるわけではありません。
  • バグ修正をリリースブランチやホットフィックスブランチに反映する場面でよく使われます。
  • コンフリクトが起きやすい操作なので、git loggit show で事前に確認するのが推奨されます。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント