Windows
git config --global core.autocrlf false
git config --global core.eol lf
Mac/Linux
何もしなくて良い
解説
gitの改行コード自動変換は以下の2つです。
- チェックアウト時:LF → CRLFに変換
- コミット時(正確にはgit add時):CRLF → LFに変換
リポジトリ内のコードをLFに統一するための補助機能です。そのため、逆方向への変換、すなわちチェックアウト時にCRLF → LFや、コミット時にLF → CRLFの変換機能はありません。そして、取り出した時にLFだと困る、またCRLFを新たに作ってしまいがちなWindowsへの対策として自動変換があります。
リポジトリに.gitattributes
が存在する場合、まずその設定が捜査されて、指定のされ方によってはこの段階で変換するかどうかが確定します。不特定多数の人がコミットするリポジトリで、絶対にCRLFを紛れ込ませたく無い場合は、.gitattributes
でガチガチに設定します。
確定しない場合に初めて、core.autocrlf
およびcore.eol
の設定が参照されます。このときcore.autocrlf
をfalse
、core.eol
をlf
にしておくと変換されません。Mac/Linuxはデフォルトでこの設定と同等の動作になります。
補足
Windowsでgit add時に以下の警告が出るのは、core.eol
をlf
に設定できていないためです。
In the working copy of 'xx', LF will be replaced by CRLF the next time Git touches it.
これは次回チェックアウト時にLFがCRLFに変換されるという警告です。.gitattributes
に* text=auto
が設定されていると発生することがあります。例えば、Laravelのプロジェクトはデフォルトでこの設定がなされています。
参考
詳細を知りたい方は、こちらの解説が詳しいです。
http://ogawa.s18.xrea.com/tdiary/20200828p01.html