マージ中の git checkout HEAD が無関係なファイルを巻き戻す事故の回避
conflict解消中はHEADがマージ前コミットを指すため、退避目的のgit checkout HEAD -- <path>が相手側の自動マージ結果ごと消す。CIで発覚するまで気づけない罠と回避策
約1.7万トークンの節約 (API料金換算で約25円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「マージ中の git checkout HEAD が無関係なファイルを巻き戻す事故の回避」は、開発プロセスカテゴリのAI指示書(MDファイル)です。conflict解消中はHEADがマージ前コミットを指すため、退避目的のgit checkout HEAD -- <path>が相手側の自動マージ結果ごと消す。CIで発覚するまで気づけない罠と回避策この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約1.7万トークン(API料金換算で約25円)・92%のトークンを節約できます。
- カテゴリ
- 開発プロセス
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約1.8万トークン
- この巻物使用時
- 約1,500トークン
- 節約量
- 約1.7万トークン (約25円)
- 更新日
- 2026-09-18
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/git-checkout-head/raw を読み込んで、この指示書どおりに実装して"
中身
マージ中の git checkout HEAD -- <path> は無関係なファイルまで巻き戻す
症状
git merge がコンフリクトで停止している間(まだ merge commit を作っていない間)は、HEAD は依然としてマージ前の自分のコミットを指す(マージ相手は MERGE_HEAD)。
この状態で、無関係なファイルの挙動を切り分けようとして
git checkout <相手ブランチ> -- <path> # 相手側の内容を一時的に見る
# ... 確認 ...
git checkout HEAD -- <path> # 元に戻したつもり
を打つと、<path> は「マージ前の自分の版」に強制的に戻る。そのファイルを自分のブランチが一度も変更していなくても、3-way merge が無競合で自動的に取り込んでいた相手側の変更ごと消える。
コンフリクトマーカーが無いファイル(=自動マージが成功したファイル)は一見「触っていない」ように見えるため、この巻き戻りは目視レビューでは気づきにくい。CI(あるいは相手側の変更を前提にした後続のテスト)で初めて発覚する。
実際に起きたこと
大きなコンフリクト(別ファイル)を解消する過程で、無関係な1ファイルのテスト失敗を切り分けるために上記のパターンを実行し、そのまま merge commit して push した。結果、相手ブランチ側が既に入れていた修正(子プロセス起動に windowsHide: true を付ける、という全ファイル横断の lint 的テストで担保されていた規約)が巻き戻った状態で main にマージされた。CI の当該テストが検出するまで気づかなかった。
Why
マージ処理中は「HEAD = 今の作業内容」という直感が成立しない。conflict 解消中に何かを一時的に見比べたい/退避したい、と思った瞬間が罠になる。
回避策
- マージ・リベース進行中に特定パスを一時的に見比べたい/退避したい時は、
HEADではなく具体的なコミットSHAかブランチ名を使う。- ファイル内容だけ確認したいなら
git show <ref>:<path>を別ファイルに書き出して diff する(作業ツリーは触らない)。 - どうしても checkout したいなら
git checkout <具体的なref> -- <path>(HEADではなく実際の SHA / ブランチ名)。
- ファイル内容だけ確認したいなら
- マージ完了(commit)後は、そのマージが自動解決したファイルも含めて、CI・関連テストを一通り流す。「コンフリクトマーカーが消えた=正しい」ではない。
- 迷ったら
git merge --abortでやり直す方が、誤った状態で commit するより安全。 - 複数の作業を同じ working directory で並行させない(マージ作業は
git worktree addで専用の作業ディレクトリを切ると、この種の取り違えごと起きにくくなる)。
適用範囲
git を使う開発全般。GitHub / GitLab / 自前 git サーバ、言語・フレームワーク問わず、コンフリクト解消の途中で「一時的にファイルを退避・復元したい」場面全てに当てはまる。
よくある質問
+「マージ中の git checkout HEAD が無関係なファイルを巻き戻す事故の回避」とは何ですか?
conflict解消中はHEADがマージ前コミットを指すため、退避目的のgit checkout HEAD -- <path>が相手側の自動マージ結果ごと消す。CIで発覚するまで気づけない罠と回避策
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約1.8万トークンかかりますが、この巻物を使えば約1,500トークンで済みます。差し引き約1.7万トークン(API料金換算で約25円)・92%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
スマホ(Remote Control)から即相談できる Claude Code タブを VS Code に毎朝自動で用意する
自作VS Code拡張で公式Claude Codeのコマンド(editor.openLast/newConversation/renameSessionTab)を叩き、名前付きタブをN本自動補充。夜間はWM_CLOSE→再起動で毎朝揃える。--bg/ターミナル経路・タブ0でのnewConversation・SendKeys再読み込みが失敗する実測付き
夜間ジョブ異常を通知で終わらせず自動修復→AI修理PR→人へ引き渡す閉ループ
監視の『検知して通知』の後段に、決定的Playbook→AIコーダーの隔離worktree修理PR→持ち越し→人への3要素引き渡し、を足す実装指示書。argvで指示を渡すな等の実測の落とし穴つき
ドキュメント駆動開発プロセス CLAUDE.md — 作るものを固めてから書かせる
「AIが暴走して意図と違うものを作る」を根絶する開発プロセス指示書。UI仕様→機能設計→実装の順をAIに強制し、1ファイルごとに承認ゲートを挟む。受託開発・チーム開発向け。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア