Copy & Paste Engineer

【Git】 autocrlf false なのに CRLF に自動変換される現象

【Git】 autocrlf false なのに CRLF に自動変換される現象

Git で autocrlf false なのに CRLF に自動変換される現象が発生。 その解決方法のメモ。

現象

Git の autocrlf=false なのにリポジトリにアップされているファイルと改行コードが違う。

autocrlf を確認

まずは autocrlf の確認をして自動変換がなされないことを確認

git config --global core.autocrlf

もし設定されてなければ以下のコマンドで false に設定すると自動変換されません。

git config --global core.autocrlf false

原因 犯人は.gitattributes

.gitattributes の設定が犯人でした。

# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto

* text=auto にすると変換を行うかどうかはGit任せになります。 この設定少し厄介で、 autocrlfが「false」の状態でこの.gitattributesを追加するとautocrlfの設定を無視してCRLFに変換されるそうです。ええ・・・ 「input」なら問題なしです。 引用元:【Git】変更していないのに勝手に変更されるファイルがある時の対処法 | offlo.in(オフロイン)

対策

対策をいくつか。

外す

指定を辞めます。

# * text eol=lf

指定する

ちゃんと指定すること

* text eol=lf

注意点

ただし、上記2つの方法をやった後はローカルのリポジトリを取得しなおさないと中途半端な状態になるので作り直すようにしてください。

参考