.gitattributes ファイルで改行コードを制御できる

.gitattributes ファイルを置いておくと、各自が ~/.gitconfigcore.autocrlf を設定していなくても、リポジトリ内の改行コードの扱いを統一できる。

$ man gitattributes で確認できる公式サンプルの読み方。

*         text=auto      # 全てのファイルのうち、テキストと判断したファイルは LF に変換する
*.txt     text           # .txt ファイルは改行コード変換を行う (上のアスタリスク * 指定に倣うので LF に変換する)
*.vcproj  text eol=crlf  # .vcproj ファイルは強制的に CRLF に変換する
*.sh      text eol-lf    # .sh ファイルは強制的に LF に変換する
*.jpg     -text          # .jpg ファイルはテキストとして解釈しない

*.jpg -text は安心のため入れてある感じ。なくても大概の場合は問題ないが、バイトコード中に CR に合致するコードが見つかった時にうっかり LF にされないようにしている。

とりあえず LF に揃えたいならこんな感じでいいんじゃないかな。特に text eol=lf という明示は要らないかと。

*        text=auto
*.jpg    -text
*.gif    -text
*.png    -text

この .gitattributescore.autocrlf の変換タイミングは、git commit 時 (正確には git add 時か) と git checkout 時に行われる。