Gitの設定のせいでGatsbyのルーティングにハマった
背景
このブログはGatsbyJSで作っており、先日コードのTypeScript化をおこなった。
元々タグ一覧ページ用のファイル名をsrc/pages/tags.js
としていたが、TypeScript化するにあたってsrc/pages/Tags.tsx
という名前にしてコミットした。
その後、Gatsbyはsrc/pages
配下のファイル名から自動でルーティングを生成することを知り、ファイル名をsrc/pages/tags.tsx
に修正した(/tags
でタグ一覧ページにアクセスしたかった)。
ローカルでの動作に問題はなかったのでそれをコミットし、Githubにプッシュ、Netlifyでデプロイした。
しかし、本番環境で動作をチェックしてみると、/tags
ページに遷移しても何も表示されなくなってしまっていた。
原因と対応
gatsby-config
やNetlifyの設定など色々確認したがなかなか原因が分からず苦労した。
結果として原因は以下のGitの設定によるものだった。
Gitはデフォルトではファイル名の大文字・小文字の変更を検知しないようになっている。
以下のコマンドからファイル名の大文字・小文字の変更を検知するように設定できる。
git config --global core.ignorecase false
.gitconfig
を直接編集する際はこちら。
[core]
ignorecase = false
つまり、今回の場合はTags.tsx -> tags.tsx
の変更がGitで検知されておらず、GithubとNetlifyにはTags.tsx
のファイル名のままでコミットされていたということだった。
おわり
Gitの設定はまだまだ奥深い。主要な設定は一通り目を通しておこうと思った。