テクノロジー · 実用ガイド

Git が「cherry-pick は空」と表示?スキップ前にインデックスを確認

コミット予定の差分が空でも、作業ツリーがクリーンとは限らず、修正の反映も証明できません。6つの一時リポジトリ実験で判断前の確認を示します。

Git インデックスと作業ツリーの差分を分ける独自図
独自の概念イラスト:cached diff が空でも未ステージ編集は残り得るため、両方を点検します。 Watch at Ease

空の cherry-pick は、変更が既に存在する場合、意図的な空コミットを選んだ場合、競合解決後のステージ済み差分がない場合に起こり得ます。エラーだけでは区別できません。

Git 2.51.1 の実験では、必要な編集が未ステージのままでもこの表示が出ました。コミット予定の内容と作業ツリーを分けて確認してから、現在の変更をスキップするか記録するか決めます。

操作状態と2種類の差分を読む

git status、git --version、git diff --cached、git diff を実行します。cached diff はコミット予定の内容と HEAD を、通常の diff は作業ツリーとインデックスを比較します。未追跡ファイルも調べます。cached diff が空でも、通常の diff が空になるわけではありません。

status が cherry-pick 中か rebase 中か確認します。rebase はコミットを再適用し、内部で cherry-pick の表現を出すことがあります。実際の操作に対応したコマンドを使い、状態ファイルの削除や reset --hard で表示を消さないでください。

予定の変更が空になる理由を確認

通常の親が1つのコミットでは git show COMMIT を読み、変更先と意図した解決結果を比較します。既存の内容と、競合を完全に変更先の内容へ解決した状態は、どちらもステージ済み差分をなくせますが、同じ意図を証明しません。マージコミットでは主線の親を明示的に選ぶ必要があります。

Tower の教材は cherry-pick が全スナップショットではなくコミットの差分を適用すると説明しています。競合処理でも解決済みファイルをステージしてから続行します。必要な結果が作業ツリーにしかなければ、内容を確認して対象パスをステージし、cached diff を再確認します。

現在の状態に合う方針を選ぶ

停止中の cherry-pick では --skip が現在のコミットを飛ばして残りを続行します。その予定コミットを捨てる意図が確認できた場合に使います。空の履歴マーカーが必要なら、インデックスを点検し、案内された git commit --allow-empty を使い、その後は status に従って残りを続行します。

新しく開始する場合、--empty=drop は後から冗長になった変更を扱い、--empty=keep は保持して --allow-empty も含意します。--allow-empty 単独は最初から空のコミット用で、すべての冗長な pick を受け入れるものではありません。逆に --empty=drop 単独では最初から空のマーカーを受け入れません。古い Git ではローカルのヘルプを確認します。

6つの一時実験で確認した結果

Git 2.51.1 で別々の一時リポジトリを使い、リモートもユーザーのリポジトリも使いませんでした。適用済みの非空パッチでは drop が HEAD を動かさず成功、keep が空コミットを作成、--allow-empty 単独は停止しました。最初から空のコミットも --empty=drop で停止し、既存の公式説明を確認できました。

2コミットの列では冗長な最初の項目を飛ばすと、後続ファイルが適用され CHERRY_PICK_HEAD が消えました。競合実験では変更先の版をステージ後、必要な未ステージ編集を残しました。--continue は空と表示し、--skip は成功して編集を未ステージのまま保持しましたが、コミットにはしませんでした。これは1つの合成例で、すべての skip が任意の編集を保存する保証ではありません。

警告の消失ではなく修正の反映を検証

選んだ操作の後に status、関係する log、2つの diff を読み直します。結果のファイルに意図した修正があるか確認し、意味のあるテストを実行して残りの列が完了したか調べます。クリーンなツリー、空のマーカー、コマンド成功はそれぞれ別の事実です。警告が消えただけで push しないでください。

現在のマニュアルと更新済みのコミュニティ回答は keep/drop/stop を既に説明しています。追加したのは空の表示の下にある未ステージの解決を見つける、実行済みの2差分監査です。Fork GUI の過去の報告は2022年に閉じられ、2026年の再発コメントには版がありません。定性的な需要の根拠であり、現行の全 Fork 版の不具合とは断定できません。

最初から空のコミットと冗長な変更の方針を示す独自図
独自の概念イラスト:空になる理由で規則が異なるため、状態と実際の版を確認します。 Watch at Ease