📝 概要
git cherry-pick は、あるブランチの特定のコミットを別のブランチに適用する便利なコマンドですが、-x オプションを付けることで 元のコミットIDを記録 することができます。
✨ -x オプションとは?
git cherry-pick -x <commit>
この -x
オプションを使うと、cherry-pick
されたコミットのメッセージに以下のような一文が追加されます:
(cherry picked from commit abcdef1234567890)
この情報があれば、元のコミットがどこだったかを後から簡単に追跡できます。
🔍 footer(例: Change-Id)がある場合の動作
Git の公式テスト(3511-cherry-pick-x.sh)に基づくと、git cherry-pick -x
は footerの一番最後 に (cherry picked from ...) を追加します。
✅ footerがある例
title
コミット本文
Signed-off-by: Foo Bar <foo@example.com>
Change-Id: Iabcdef1234567890
(cherry picked from commit abcdef1234567890)
✅ footerがない例
title
コミット本文
(cherry picked from commit abcdef1234567890)
footerがない場合、空行つきで一文が追加されます。
⚠️ 注意
footerがあるときとないときで若干ではありますが、挙動が変わるためcommitメッセージのチェック処理などを行っているところでは、pushエラーが起きる可能性があります。例えば、Gerritなどではメッセージのformatに注意してcherry-pickを行うことをお勧めします。Change-Id must be in message footer
といったメッセージがpush時に出てきた場合、footerのformatが壊れている中、cherry-pickを行いfooterまで本文と認識されているかもしれません。