macOSとWindows混成チームでのGitトラブルの解決
macOSとWindows混成チームでのGitのトラブルに遭遇した。すぐ解決しましたが、多分、何度も遭遇しそうな気がするので、その時に渡せるページとして書きます。
1. よくある話
調べたところ、混成チームのリポジトリで起きがちな「謎の差分」は、だいたい次の3つが原因とのことです。(Claude調べ)
- 改行コード。WindowsはCRLF、macOS/LinuxはLFで保存するため、中身を変えていないのにファイル全体が変更扱いになる。
- ファイル名の大文字小文字。macOSのデフォルトFSは区別しないため、
Component.tsxとcomponent.tsxの衝突に気づかずコミットしがち。 - 日本語ファイル名。macOSはNFD、WindowsはNFCで正規化するので、見た目は同じ「あ」でもバイト列が違い、別ファイル扱いになる。
2. 解決方法
.gitattributes をリポジトリ直下に置くと、改行が統一されるとのこと。詳細は微調整してください。
* text=auto eol=lf
*.sh text eol=lf
*.bat text eol=crlf
*.png binary
*.pdf binary
また、既存リポジトリへの導入後は、git add --renormalize . を一度実行して正規化コミットするのが良いらしいですが、私は試してません。
以下は、Claude opusが説明していた情報。現時点で私は試してませんが、試して確証が取れたら記載を調整していきます。
core.autocrlfは個人ごとにズレる。、チームでは触らず.gitattributesに任せる方針が無難。- 大文字小文字は、リネーム時に必ず
git mvを使うのが良い。命名は小文字+ケバブケースなどに統一すること。
日本語ファイル名は、可能なら避ける。どうしても使う場合は、macOS側でgit config --global core.precomposeunicode trueを設定して、NFCに揃える。