[git] 自動改行コード変換

Windows版 Git には commit と checkout のときに、テキストファイルの改行コード(CRLF,LF)を自動変換する機能がある。

 

自動改行コード変換機能の設定

自動改行コード変換 有効

自動改行コード変換 無効

自動改行コード変換 コミットのときのみ(CRLF⇒LF一方向)

 

自動改行コード変換セーフ設定

自動改行コード変換機能(autoCRLF)は便利(余計なお世話?)であるが、そのファイルが『テキストファイル』か『バイナリファイル』かの判定をgitのアルゴリズムに頼っている。
CRLF と LF が混在するファイルにおいて、もし一律にCRLF⇒LF変換が実行されると破壊的な変更となる。(願わくは、そのようなファイルは必ず「バイナリ」と判定されて自動改行コード変換の対象外となることがgitの期待される振る舞いであるが…)
safeCRLFを有効にするとCRLFとLFが混在するファイルは必ず自動改行コード変換の対象外となる。

 

属性(.gitattributes)の設定

テキストファイルである(自動改行コード変換対象である)か否かの判定は、ファイルの中身をサーチするgitプログラムに依存する。しかし属性(.gitattributes)を設定することで『ファイル拡張子』によって「テキストファイル」or「バイナリファイル」の判定を行うようにgitの振る舞いを変えることができる。特にShift-JISのように「テキスト」と「バイナリ」の判定が難しい文字エンコーディングをつかっているケースでは、ファイル拡張子で一律に「テキストファイル」か「バイナリファイル」かを判定する方法が確実である。

.gitattributes の記述例

関連記事