【Git】.gitattributesファイルとautocrlfの挙動メモ。

gitリポジトリからクローンした瞬間にファイルが「modified」になる現象でハマったので調べた。

「.gitattributes」が存在せず、「core.autocrlf」の値が「false」に設定されているリポジトリの場合。

  1. 改行コード「LF」のファイルを追加すると、改行コード「LF」のままコミットされる
  2. 改行コード「CRLF」のファイルを追加すると、改行コード「CRLF」のままコミットされる
  3. 改行コード「LF」のファイルをチェックアウトすると、改行コード「LF」のままチェックアウトされる
  4. 改行コード「CRLF」のファイルをチェックアウトすると、改行コード「CRLF」のままチェックアウトされる

「.gitattributes」が存在せず、「core.autocrlf」の値が「true」に設定されているリポジトリの場合。

  1. 改行コード「LF」のファイルを追加すると、改行コード「LF」のままコミットされる
  2. 改行コード「CRLF」のファイルを追加すると、改行コード「LF」でコミットされる
  3. 改行コード「LF」のファイルをチェックアウトすると、改行コード「CRLF」でチェックアウトされる
  4. 改行コード「CRLF」のファイルをチェックアウトすると、改行コード「CRLF」のままチェックアウトされる
  5. 改行コード「CRLF」のファイルをチェックアウトし、編集後コミットすると改行コード「CRLF」のままコミットされる

「.gitattributes」が存在しており「eol=crlf」が指定されている場合、「core.autocrlf」の値にかかわらず下記の挙動になる。

  1. 改行コード「LF」のファイルを追加すると、改行コード「LF」のままコミットされる
  2. 改行コード「CRLF」のファイルを追加すると、改行コード「LF」でコミットされる
  3. 改行コード「LF」のファイルをチェックアウトすると、改行コード「CRLF」でチェックアウトされる
  4. 改行コード「CRLF」のファイルをチェックアウトすると、改行コード「CRLF」のままチェックアウトされる
  5. 改行コード「CRLF」のファイルをチェックアウトし、編集後コミットすると改行コード「LF」でコミットされる

ああああああぁぁぁぁぁぁめんどくさいぃぃぃぃ!!!

めんどくさい変換とかしないでもうそのまんま扱ってくれれば十分だよ。
ってことで自分は「.gitattributes」を削除して「core.autocrlf」を「true」で安定。