解説
別ブランチの一つの変更を取り込みたい:cherry-pickを練習用に確かめよう
別のブランチにある修正を、一つだけ取り込みたい。Gitのcherry-pickは、指定したコミットの変更を、今いるブランチへ適用するために使えるよ。

別のブランチにある修正を、一つだけ取り込みたい。Gitのcherry-pickは、指定したコミットの変更を、今いるブランチへ適用するために使えるよ。
この記事は共有前の一時リポジトリだけで試す。既存の作業ブランチへ直接実行せず、作業中の変更がないことと、対象のコミットを先に確認しよう。
ブランチ全体を同じにする操作ではない
cherry-pickは、指定したコミットの変更を取り込む。別ブランチを丸ごと複製したり、そのファイルの過去版をそのまま読むだけの操作とは違う。
その修正が、さらに前の別の変更を前提にしている場合もある。一件だけ選べば、いつでも単独で動くという意味ではないよ。
一時リポジトリで試す
空の作業場所で、次を実行する。名前とメールは、練習先だけへ設定する。
mkdir cherry-practice
cd cherry-practice
git init -q -b main
git config user.name Practice
git config user.email practice@example.com
printf 'base\n' > base.txt
git add base.txt
git commit -qm base
git switch -c topic
printf 'fix\n' > fix.txt
git add fix.txt
git commit -qm fix
git switch main
git cherry-pick topic
cat fix.txt
この例はtopicの先端が取り込みたい一件なので、topicという参照名を指定している。実務ではgit showなどで対象のハッシュと差分を確かめよう。結果はfixと読め、mainにその変更のコミットが加わる。
取り込んだ後も検証する
履歴へ記録できたことと、プログラムが正常に動くことは別。関連する設定やテスト、元の変更が依存する内容も確認する。
変更を別の履歴へ適用するため、元と同じハッシュになる保証はない。一方、この単純な例で必ずハッシュが変わるとも決めつけず、必要な場合は実際の履歴を読もう。
競合した場合は止まって読む
同じ場所が異なる形で編集されていると、競合する場合がある。状態をgit statusで読み、続けるか中断するかを決める。中断にはgit cherry-pick --abortがあるけれど、対象の操作が進行中か確認して使おう。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。