問題
文字コードがUTF-8以外のファイルをGitリポジトリにコミットすると、そのファイルが文字化けしてしまう。
(厳密にはファイル自体は文字化けしておらず、差分表示などの際にUTF-8でデコードされるために文字化けする)
解決策
リポジトリ直下に .gitattributes
ファイルを作成し、対象のファイルに working-tree-encoding
属性で正しいエンコーディングを指定する。
例えば、WindowsでShift_JIS(cp932)の.txtファイルを扱いたい場合は以下のようにする。
.gitattributes
*.txt working-tree-encoding=cp932
なお、内部的には指定されたエンコーディングとUTF-8とが相互変換されているだけで、実際のGitリポジトリにはUTF-8で上がるので注意。
詳細は公式ドキュメントを参照。
Git - gitattributes Documentation