【Git】 autocrlf false なのに CRLF に自動変換される現象
Git で autocrlf false なのに CRLF に自動変換される現象が発生。
その解決方法のメモ。
現象
Git の autocrlf=false なのにリポジトリにアップされているファイルと改行コードが違う。
autocrlf を確認
まずは autocrlf の確認をして自動変換がなされないことを確認
git config --global core.autocrlf
inputcheckout: 元のまま
commit: LFに変換
truecheckout: CRLFへ変換
commit: LFに変換
falsecheckout: 元のまま
commit: 元のまま
もし設定されてなければ以下のコマンドで false に設定すると自動変換されません。
git config --global core.autocrlf false
原因 犯人は.gitattributes
.gitattributes の設定が犯人でした。
| |
* text=autoにすると変換を行うかどうかはGit任せになります。
この設定少し厄介で、
autocrlfが「false」の状態でこの.gitattributesを追加するとautocrlfの設定を無視してCRLFに変換されるそうです。ええ・・・
「input」なら問題なしです。
引用元:【Git】変更していないのに勝手に変更されるファイルがある時の対処法 | offlo.in(オフロイン)
対策
対策をいくつか。
外す
指定を辞めます。
| |
指定する
ちゃんと指定すること
| |
注意点
ただし、上記2つの方法をやった後はローカルのリポジトリを取得しなおさないと中途半端な状態になるので作り直すようにしてください。