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 情報とシーケンサー状態が予期せぬ形になり、複数コミットをまとめてチェリーピックしていた場合に後続のコミット適用が中断・破損します。
正しい解消手順
- ターミナルで
git statusを確認し、Unmerged paths:にある競合ファイルをエディタで修正する - 修正したファイルを
git add <ファイル名>でステージング領域に追加する git commitは実行せず、git cherry-pick --continueを実行してコミットメッセージエディタを立ち上げる- 安全に続行し、チェリーピックを完了させる