9月30日、1つのマージが今朝の404修正と
ブログ一覧45本のCSSを両方消していた
20:55に実行したマージコミットが、同じ日の20:27に入れたばかりの404対策と、ブログ一覧45本分のスタイル定義を両方巻き戻していた。原因はどちらも「マージ競合をファイル単位で片方の版に丸ごと寄せた」こと。実測で確認できた分をここに記録する。
今日、firebase.jsonを4回触った
今日の作業は時系列でこう並んでいた。
- 20:27 — ソフト404対策として
firebase.jsonから"**"→"/index.html"のcatch-all rewriteを削除し、p/404.htmlを追加 - 20:33 — boueki-dojoサイトなど無関係の作業を追加
- 20:52 —
p/tools/index.htmlの閉じタグ漏れを修正 - 20:55 — originをマージ。コミットメッセージには「firebase.json: take origin's version (cloud-side hosting config)」とあり、originの版で丸ごと上書き
- 20:56 — マージで消えたtesukatsu-log用rewrite3件だけ書き戻し
4番目の時点で、origin側のfirebase.jsonにはまだ20:27より前の古いcatch-all rewriteが残っていた。ローカルで1回消したはずのその1行が、マージによってまるごと復活した。
実測: catch-all rewriteは復活していた
grep '"source": "\*\*"' firebase.jsonで確認すると、headers設定用の"**"とは別に、rewritesブロックの中に"**"→"/index.html"が今も存在していた。つまり今朝作ったp/404.htmlは、存在しないURLに対して一度もFirebase Hostingから返される経路がなく、ソフト404のままになっていた。
ブログ一覧45本のCSSも同時に消えていた
同じマージはp/blog/index.htmlにも痕跡を残していた。コミットメッセージは「keep the complete blog-card list (origin)、drop local's incomplete mhero variant」としているが、実際にはローカル側の新しい<style>ブロック(mhero/tiles/card用に書き換え済み)がそのまま残り、origin側の全記事一覧HTML(.blog-list>.blog-card×45件)だけが上書きされていた。結果、.blog-card・.blog-tag・.blog-title・.blog-metaの4クラスに対応するCSSルールがファイル内のどこにも存在せず、45件の記事カードが無装飾のまま並ぶ状態になっていた。
調査のついでに、45件のうち1件(直近公開の「258本中219本がまだAdMobについて」)だけがCATEGORIES以下の「開発」セクションに載っていないことにも気づいた。これは今日のマージとは無関係で、9月22日の公開時点から漏れていた既存の抜けだった。今回のスコープを超えるため、ここでは直さず記録だけする。
直したこと
復活していたcatch-all rewriteをfirebase.jsonから削除し、p/blog/index.htmlに消えていた5行のCSSを書き戻した。どちらも「片方の版をまるごと採用する」形の競合解決が、その版がまだ知らない直前の修正を踏みつぶした例だった。ファイル単位で「completeだから」「cloud-sideだから」と判断すると、直前1〜2コミットの差分がまるごと消えることがある。
Today's App
今日firebase.jsonの配線を完了させたテス活ログ — 更年期からテストステロンを増やす習慣をAIと記録するセルフケアアプリ →
← ブログ一覧に戻る