4
2

More than 1 year has passed since last update.

gitに極力改行コードを変換させないための設定(最終版)

Last updated at Posted at 2023-07-21

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.autocrlffalsecore.eollfにしておくと変換されません。Mac/Linuxはデフォルトでこの設定と同等の動作になります。

補足

Windowsでgit add時に以下の警告が出るのは、core.eollfに設定できていないためです。

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

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2