git cherry-pickのコンフリクト解消・中断・スキップ操作手順

Git CLI DevOps
結論

修正後は git add . して git cherry-pick --continue、取り消すなら git cherry-pick --abort です。

# Git SCM公式仕様:コンフリクト発生時の解消コマンド列
# 1. コンフリクトしているファイルを修正してステージング
git add path/to/conflicted-file.ts

# 2. チェリーピック処理を再開 (手動 git commit は禁止)
git cherry-pick --continue

Git公式仕様:4つの状態制御オプション

git cherry-pick の処理中に問題が発生した場合、Git公式ドキュメント(git-scm.com/docs/git-cherry-pick)では以下の4つの復旧オプションが定義されています。

オプション動作・結果使用すべき場面
--continueコンフリクト解消後、残りのコミット適用を続行コンフリクトを正常に手動解決した時
--abort操作を全キャンセルし、実行直前の状態へ完全復元途中でやめて元に戻したい時
--skip競合した該当コミットの適用をスキップして次へ進むそのコミットが不要だと判明した時
--quitシーケンサー状態を消去し、現在の作業ツリーの変更を残す中間状態を保持して作業を止めたい時

実際に起こる事故:解消後に git commit を実行して壊れる罠

現場で最も頻出するミスは、コンフリクトを修正して git add . をした後に、誤って通常の git commit コマンドを実行してしまうことです。

git commit を手動実行すると、Gitが保持している CHERRY_PICK_HEAD 情報とシーケンサー状態が予期せぬ形になり、複数コミットをまとめてチェリーピックしていた場合に後続のコミット適用が中断・破損します。


正しい解消手順

  1. ターミナルで git status を確認し、Unmerged paths: にある競合ファイルをエディタで修正する
  2. 修正したファイルを git add <ファイル名> でステージング領域に追加する
  3. git commit は実行せずgit cherry-pick --continue を実行してコミットメッセージエディタを立ち上げる
  4. 安全に続行し、チェリーピックを完了させる