問題の状況

Git で管理しているファイルのハッシュ値が開発環境によって異なる値になる現象が発生しました。開発環境として、一方は Windows でもう一方は Mac です。

原因と解決方法

Git では Windows と Mac や Linux では、改行コードが異なるため、自動的に変換する機能が備わっています。具体的には、 core.autocrlf という設定によって Git リモートからソースコードを Clone/Pull するときにクライアントが Windows であれば、改行コードを LF から CRLF へ変換し、 Push するときに CRLF から LF へ変換することが可能です。この設定は次の 3 種類の値を取ります。

動作
true リポジトリにコミットするときに LF を CRLF に変換し、チェックアウトするときに CRLF を LF に変換する
input リポジトリにコミットするときに LF を CRLF に変換し、チェックアウトするときに変換しない
false 変換しない

この設定が異なると、同じファイルでも改行コードが異なるため、ハッシュ値が異なることがあります。もし、この問題が発生しないようにしたい場合、次のコマンドで core.autocrlf の設定を変更してください。

git config --global core.autocrlf input