Git で「LF will be replaced by CRLF」の警告が消せない
「LF will be replaced by CRLF」は core.autocrlf による改行コード自動変換の予告である。
.gitattributes で改行方針を固定するか自動変換を切れば止まる。
公開:
要約
「LF will be replaced by CRLF」はエラーではなく警告である。
Git が改行コードを自動変換する予告で、core.autocrlf の設定によって起きる。
変換方針を .gitattributes で固定するか、core.autocrlf を無効にすれば止まる。
よくある原因
- 自動変換: Windows では
core.autocrlfの既定がtrueで、コミット時に CRLF から LF、チェックアウト時に LF から CRLF へ変換する。
この予告が警告として出る。 - 改行の混在: リポジトリに CRLF と LF が混ざっていると、次に Git がファイルを触るときに置き換えが起きる。
- 方針が未固定:
.gitattributesが無いと、開発者ごとの OS やエディタ設定で変換結果がばらつく。
解決策
1. .gitattributes で改行を正規化する(推奨)
リポジトリのルートに .gitattributes を置き、テキストの改行を LF に統一する。
* text=autoこれで作業ツリーの改行が何であっても、リポジトリ(index)には LF で格納される。
特定の拡張子だけ CRLF を保ちたい場合は *.bat text eol=crlf のように eol を明示する。
挙動の詳細は公式の gitattributes ドキュメント(新しいタブで開く)を参照する。
2. 既存ファイルを正規化する
.gitattributes を追加しただけでは既存ファイルは変わらない。
次のコマンドで作業ツリー全体を再正規化する。
git add --renormalize .
git commit -m "Normalize line endings"3. 警告だけ止めたい場合
変換自体が不要なら自動変換を切る。
git config core.autocrlf falseチームで方針を揃えるなら、個人設定より .gitattributes で固定する方が再現性が高い。