macOSとWindows混成チームでのGitトラブルの解決

macOSとWindows混成チームでのGitのトラブルに遭遇した。すぐ解決しましたが、多分、何度も遭遇しそうな気がするので、その時に渡せるページとして書きます。

1. よくある話

調べたところ、混成チームのリポジトリで起きがちな「謎の差分」は、だいたい次の3つが原因とのことです。(Claude調べ)

  • 改行コード。WindowsはCRLF、macOS/LinuxはLFで保存するため、中身を変えていないのにファイル全体が変更扱いになる。
  • ファイル名の大文字小文字。macOSのデフォルトFSは区別しないため、Component.tsxcomponent.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に揃える。

類似投稿