git config core.autoCRLF を、ファイル追加時とファイル修正時で変えると面倒なことになる

core.autoCRLF の説明

gitのcore.autoCRLF 設定は、windows環境で作業コピーの改行コードを自動変換してくれる機能の設定。
trueにしておくと、レポジトリ内にテキストファイルを格納するときに改行コードをCRLF→LFに変換し、レポジトリからテキストファイルを取り出すときに改行コードをLF→CRLFに変換する。

問題

core.autoCRLF=trueの状態でファイルを追加すると、レポジトリ内のファイルは改行コードLFで保存される。
この状態は『レポジトリ内のファイルと、作業コピーの改行コードが異なる』が『レポジトリと作業コピー間で改行コード変換がされる』ので、git statusを見ても『変更は存在しない』と言われる。
その後core.autoCRLF=falseに変更すると『レポジトリ内のファイルと、作業コピーの改行コードが異なり』『改行コード変換がされない』のに『変更は存在しない』と判定され続ける。
さらに、ここで作業コピーの内容は変更せずにファイル更新時刻だけ変えると、『変更は存在する』と判定されるように変わる。
( つまり、gitが「ファイル更新時刻を見て、判定方法を自動的に切り替えている」ということ )
上記のような状態だと、ファイルを変更した後で全く同じ状態に戻しても「変更が存在する」と判定されるので非常に面倒くさい。

解決方法

問題を解消する方法としては、レポジトリに改行コードCRLFの内容を上書きコミットして『レポジトリ内のファイルと、作業コピーの改行コードが一致する』状態にしてやればよい。
具体的には、全ファイルにtouchをかけてファイル更新時刻を変更し「変更が存在する」と判定されるようにした上で、全ファイルをadd, commitして改行コードCRLFの内容を上書きコミットする。