Git の設定 (git config) で、core.autocrlf や core.safecrlf を設定しておくと、コミットやチェックアウト時に改行コードを自動変換することができます。
変換設定として、下記のような設定を行うことができます。
core.autocrlffalse: コミット時、チェックアウト時に改行コードの変換を行わないtrue: コミット時に CRLF→LF の変換を行い、チェックアウト時に LF→CRLF の返還を行う。input: コミット時に CRLF→LF の変換を行い、チェックアウト時には変換を行わない。
core.safecrlftrue: ファイル内に複数の改行コードが混じっている場合に自動変換を行わない。
おすすめの設定は以下の通りです。
このように設定しておくと、Git サーバー側では LF で統一して管理され、チェックアウト後は各 OS の標準的な改行コード(Windows は CRLF、macOS は LF)でファイルを扱えます。
$ git config --global core.autocrlf true # コミット時: CRLF=>LF チェックアウト時: LF=>CRLF
$ git config --global core.safecrlf true # ファイル内に複数の改行コードが混じっている場合に自動変換をしない
$ git config --global core.whitespace cr-at-eol # git diff 時の ^M を抑制
$ git config --global core.autocrlf input # コミット時: CRLF=>LF チェックアウト時: 変換なし
$ git config --global core.safecrlf true # ファイル内に複数の改行コードが混じっている場合に自動変換をしない
改行コード関連の変換を一切行ってほしくない場合は、単純に core.autocrlf を false に設定します。
複雑な構成管理を行っている環境では、結局この設定が一番安全だったりします。
$ git config --global core.autocrlf false # 改行コードの自動変換をしない