マキモノ
開発プロセス無料✅ 公式検証済みv1.0.0 / 更新

「マージしたのに直らない」— デプロイ元と定期実行のブランチが違う罠の検出と対処

GitHub Actions の schedule は常にデフォルトブランチで走る。本番デプロイ元が別ブランチだと、同じスクリプトの版が2つ存在し「マージしてデプロイしたのに毎晩のバッチだけ古いまま」になる。検出コマンド、base の選び方、そして『デプロイ完了は証拠にならない』ことの確かめ方まで。

出品者: kim@orgiast.jp📖 読込 約1,524トークン (約2円)💰 コスパ 25
トークン節約メーター91%節約
ゼロからAIに作らせた場合4.2万トークン
このMDを読ませた場合3,600トークン

3.8万トークンの節約 (API料金換算で約58円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。

この巻物について

「マージしたのに直らない」— デプロイ元と定期実行のブランチが違う罠の検出と対処」は、開発プロセスカテゴリのAI指示書(MDファイル)です。GitHub Actions の schedule は常にデフォルトブランチで走る。本番デプロイ元が別ブランチだと、同じスクリプトの版が2つ存在し「マージしてデプロイしたのに毎晩のバッチだけ古いまま」になる。検出コマンド、base の選び方、そして『デプロイ完了は証拠にならない』ことの確かめ方まで。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約3.8万トークン(API料金換算で約58円)・91%のトークンを節約できます。

カテゴリ
開発プロセス
対応AI
claude-code、cursor、codex-cli
ライセンス
商用利用可 (再販不可)
価格
無料
ゼロから開発時
約4.2万トークン
この巻物使用時
約3,600トークン
節約量
約3.8万トークン (約58円)
更新日
2026-09-12

使い方 (AIに渡す3つの方法)

いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。

⬇ .md をダウンロード
claude "https://makimono-md.vercel.app/api/v1/files/md-f9a34900/raw を読み込んで、この指示書どおりに実装して"
claude-codecursorcodex-cliライセンス: 商用利用可 (再販不可)

中身

「マージしたのに直らない」— デプロイ元ブランチと定期実行ブランチが違う罠

誰向けか

1つのリポジトリで Web アプリ本体定期バッチ(GitHub Actions の scheduleの両方を動かしていて、 かつ本番デプロイ元が main 以外のブランチになっているチーム。

症状

バグを直して PR を出し、CI も緑、本番ブランチにマージしてデプロイもした。 なのに毎晩のバッチだけ古い挙動のまま。ログを見ても新しいコードが動いた形跡がない。 「デプロイが反映されていないのでは」と本番を何度も再デプロイして時間を溶かす。

原因(仕様であってバグではない)

GitHub Actions の on: schedule は、常にリポジトリのデフォルトブランチのワークフロー定義で起動する。 さらに actions/checkout@v4ref: 無しで書くと、そのデフォルトブランチをチェックアウトする

つまり実行されるスクリプトの実体は「デフォルトブランチ版」。 本番デプロイ元が別ブランチ(例: releaseprodcost-opt など)だと、同じファイルの中身が2つ存在し、 アプリは片方、定期バッチはもう片方を使うという状態になる。

ブランチが長く分岐しているほど中身の差は開く。実測例では、片方だけに167コミット・もう片方だけに201コミットあり、 問題のスクリプトはデフォルトブランチ側の方が新しかった(=本番デプロイ元の方が古い)。 この状態で「本番ブランチを土台に」直すと、古い版への変更を作ったうえに定期バッチには一切効かないという二重の空振りになる。

検出手順

1. 定期実行がどのブランチで走っているかを確認する

gh run list --workflow=<ワークフロー名>.yml --limit 3 \
  --json headBranch,status,conclusion,createdAt,databaseId \
  -q '.[] | "\(.createdAt) \(.headBranch) \(.status)/\(.conclusion) id=\(.databaseId)"'

headBranch がデフォルトブランチになっていれば、この罠の条件を満たす。

2. デフォルトブランチと本番デプロイ元を確認する

gh repo view --json defaultBranchRef -q .defaultBranchRef.name

3. 触ろうとしているファイルが2ブランチで食い違っていないか調べる(着手前に必ず)

# 分岐の大きさ
git rev-list --count origin/<デフォルト>..origin/<デプロイ元>
git rev-list --count origin/<デプロイ元>..origin/<デフォルト>

# そのファイルの最終更新がどちらが新しいか
git log -1 --format="%ad %h %s" --date=short origin/<デフォルト>   -- <パス>
git log -1 --format="%ad %h %s" --date=short origin/<デプロイ元>  -- <パス>

# 中身の差
git diff origin/<デフォルト> origin/<デプロイ元> -- <パス> --stat

4. そもそもその列/機能に触っているのはどちらの版かを確かめる

git grep -n "<関数名や列名>" origin/<デフォルト>  -- scripts src
git grep -n "<関数名や列名>" origin/<デプロイ元> -- scripts src

片方で 0 件なら、その処理は片方のブランチにしか存在しない。 「本番で動いているはず」という思い込みが、ここで崩れる。

対処のルール(これだけ覚える)

触るものbase にすべきブランチ
.github/workflows/ 配下デフォルトブランチ
定期バッチが実行するスクリプト(scripts/ 等)デフォルトブランチ
Web アプリ本体・API・アプリ内 cron ハンドラ本番デプロイ元ブランチ

着手前に「このファイルは誰が実行するのか」を1回だけ問う。schedule から実行されるなら base はデフォルトブランチ。

直ったことの確かめ方(デプロイ完了は証拠にならない)

新コードにしか存在しないログ行を1本仕込み、実行ログにそれが出たことを確認する。

console.log(`結果: 更新=${updated}, 無効化=${deactivated}, <新機能名>: ${newCount}件`);
gh run view <run-id> --log | grep -iE "<新機能名>|結果:"

この行が出ていれば、その実行が新コードだったと断定できる。 「マージした」「デプロイした」「CI が緑だった」はいずれも “定期実行が新コードを使った”ことの証拠にならない。

応用: 逆方向の事故を先に防ぐ

片方のブランチにしかない「上書き処理」がある場合、将来ブランチを揃えた瞬間にそれが有効化される。 例えば「DB の値をシートの値で無条件に上書きする同期」がデプロイ元ブランチにだけ存在するなら、 デフォルトブランチへ寄せた瞬間に手で直したデータが元に戻る。 ブランチを統合する前に、git diff上書き系の処理が増えないかを必ず見る。

根本対処

  • 本番デプロイ元をデフォルトブランチに一致させる(最善)
  • できないなら、ワークフローに ref: を明示して意図を固定する
    - uses: actions/checkout@v4
      with:
        ref: <本番ブランチ>
    
    この1行があるだけで、読む人が「どちらの版が動くのか」で迷わなくなる

よくある質問

「「マージしたのに直らない」— デプロイ元と定期実行のブランチが違う罠の検出と対処」とは何ですか?

GitHub Actions の schedule は常にデフォルトブランチで走る。本番デプロイ元が別ブランチだと、同じスクリプトの版が2つ存在し「マージしてデプロイしたのに毎晩のバッチだけ古いまま」になる。検出コマンド、base の選び方、そして『デプロイ完了は証拠にならない』ことの確かめ方まで。

どれくらいトークン(費用)を節約できますか?

ゼロから開発すると約4.2万トークンかかりますが、この巻物を使えば約3,600トークンで済みます。差し引き約3.8万トークン(API料金換算で約58円)・91%の節約です。

どうやって使いますか?

無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。

どのAIツールに対応していますか?

claude-code、cursor、codex-cli に対応しています。

商用利用できますか?

ライセンスは「商用利用可 (再販不可)」です。

🤝 自分でAIを動かすのは、まだ不安…という方へ

この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。

AI代行堂を見る →

関連する巻物

この巻物、誰かのトークンも救えます

𝕏 で節約レシートをシェア