warning: LF will be replaced by CRLF inが出たときの対処法

git addすると以下のような警告が表示された。

$ git add .
warning: LF will be replaced by CRLF in .gitignore.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in README.md.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in index.js.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in package-lock.json.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in package.json.
The file will have its original line endings in your working directory

 

「なんじゃこりゃ?」と思って調べてみると

どうやらGitにはcommitした時とcheckoutした時に自動で改行コードを変換する機能があるらしい。

  • Mac/LinuxにインストールされているGit
    CRLFLFに自動変換する
  • WindowsにインストールされているGit
    LFCRLFに自動変換する

 

つまり、先ほどの警告は「LFな改行コードは自動でCRLFに置き換えるで?」ということを言ってるらしい。

 

この自動変換機能がONになっているかどうかは、以下のコマンドで確認できる。

$ git config core.autocrlf
true

 

これをfalseにすれば、この自動変換機能をOFFにできるらしい。

まぁ改行コードが混在してるより統一されてる方がスマートなのでこの機能がデフォルトでONになってるのは分かるけど

でもよくよく考えると「そもそもLFのファイルとCRLFのファイルが混在しているのが問題なのでは?」と思ったので、根本的な解決をすることにした。

 

まず、私が使用しているOSはWindowsなので

  • Windowsで作成したファイルはすべてCRLFとなるのに対し、
  • Linuxのコマンドやnpmのコマンドなど開発系のツールで作成されるファイルの改行コードはすべてLFとなる。

というのが根本的な問題なわけです。

 

なので以下のようにして、すべてLFに統一することにしました。

  • VScodeのデフォルトの改行コードを以下のようにLFに指定する
    VScode_改行コード_eol
  • 既存のCRLFなファイルは、VScodeの右下から、CRLFLFに変更する
  • git config --global core.autocrlf falseを打つ

 

これで、VScodeで作成されるファイルはすべてLFになるし、Gitも改行コードについてはノータッチになるし、既存のファイルもすべてLFになる。

もともとLinuxも全部LFだし、最近のMacだって全部LFだし、LFに合わせた方が絶対いいですよね。

 

まぁ個人で開発するような場合は、改行コードが混在していようがどうでもいいと思いますし

ぶっちゃけ別にチームで開発している場合でも文字コードが混在していても特に不都合はないと思うので、どうでもいい気がしますが。。

 

おわり

Git
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。
元アフィリエイターなWEBエンジニアです。うんちコードなら書けます。
お仕事あれば下さい。カジュアル面談も気軽に誘って下さい。

技術スタック:TypeScript/Next.js/Express/Docker/AWS

penpenをフォローする
penpenをフォローする
penpenメモ

コメント

タイトルとURLをコピーしました