Git

It lets you copy just one specific commit from another branch into your current branch—like a precise, copy-and-paste for code changes.

git cherry-pick

これは何?

git cherry-pick は「他の枝(ブランチ)の特定の変更だけを、今いるブランチに持ってくる」コマンドです。

枝ごと全部は取り込まず、美味しい実(=欲しいコミット)だけを摘み取るイメージ。

ポイント

どんな時に使う?

いちばん短い使い方(単発)

  1. 取り込み先へ移動

    Git Bash

    git switch main
  2. 取り込みたいコミットのハッシュを控える(例: abc1234
  3. 実行

    Git Bash

    git cherry-pick abc1234

これで、abc1234 の変更が 今いるブランチの先頭に新しいコミットとして追加されます。

複数コミットを順番に移す

古い順に並べて渡すのが安全・確実です。

Git Bash

git cherry-pick <old1> <old2> <newest>

(範囲指定もできますが、最初は 明示的に列挙するのがおすすめ)

便利オプション(最初に覚えるならこの2つ)

元コミット番号を残す(追跡しやすい)

Git Bash

git cherry-pick -x <commit>

→ コミットメッセージ末尾に「(cherry picked from …)」が自動で付く

まずはステージだけして、まとめてコミットしたい

Git Bash

git cherry-pick -n <commit>   # = --no-commit

→ 複数を -n で集めて、最後に自分のメッセージで1回コミット

コンフリクトになったら

  1. 衝突ファイルを直し、解決済みにする

    Git Bash

    git add <file>
  2. 続行

    Git Bash

    git cherry-pick --continue
  3. どうしても無理なら中止

    Git Bash

    git cherry-pick --abort

(特定の1件だけ飛ばしたい時は --skip

よくある落とし穴(ここだけ意識)

履歴が増える
コピーなので新しいコミットが1つ増える(元とハッシュは違う)
重複取り込みに注意
同じ変更を別ルートで取り込むと、同内容が二重になることがある
マージコミットは難しい
最初は単一コミットを対象にするのが吉(マージコミットは上級者向け)

他の操作との違い(ざっくり)

merge
ブランチを丸ごと合わせる
rebase
ブランチの並び替え・付け替え
cherry-pick
欲しいコミットだけピンポイントで持ってくる

小さな実務メモ